2013-03-17 14 views
11

एक या अधिक प्रतीक्षाकर्ताओं और प्रतीक्षाों को बनाकर, क्या सी # में कोरआउटिन बनाना संभव है?सी # async, कार्यों के बिना प्रतीक्षा

आदर्श रूप में मैं की तरह कुछ लिखने में सक्षम होना चाहते हैं:

void async Click() { 
    var mouse_position = await left_mouse_click(); 
    await shoot_projectile(); 
} 

और उसके बाद क्लिक करें विधि कुछ है कि मैं या तो एक और async विधि के अंदर या कि इंतजार कर सकते हैं मैं स्पष्ट रूप से कुछ MoveNext साथ पुनरावृति कर सकते हैं से प्राप्त/GetResult विधि।

अंतिम लक्ष्य यह है कि मुझे एक खेल विकास ढांचे (http://casanova.codeplex.com) के लिए एफ # मोनैडिक कोरआउट के साथ सी # एसिंक/प्रतीक्षा करने की आवश्यकता है।

उत्तर

7

एक या अधिक प्रतीक्षाकर्ताओं और प्रतीक्षाों को बनाकर, क्या सी # में कोरआउटिन बनाना संभव है?

ज़रूर! मेरे पास blog post है जो साधारण कोरआउटिन बनाने के लिए TaskScheduler का उपयोग करता है, और जॉन स्कीट में blog post है जो सरल कोरआउट बनाने के लिए कस्टम प्रतीक्षा का उपयोग करता है।

लेकिन अपने शेष प्रश्न और टिप्पणियों को देखते हुए, मुझे यकीन नहीं है कि कोरआउट्स वास्तव में क्या चाहते हैं। यदि आप प्रतीक्षा करने के लिए "पुनरावृत्त" करना चाहते हैं, तो आपकी सर्वश्रेष्ठ शर्त Reactive Extensions है (जो async के साथ अच्छी तरह से इंटरऑपरेट करती है)। "Async उपज" के लिए कोई सी # भाषा सुविधा नहीं है।

+0

हां, ऐसा लगता है। मुझे बस एक एसिंक के अंदर उपज करने और बाहरी लूप से सभी परिणामी पैदावारों के माध्यम से कदम उठाने में सक्षम होने की आवश्यकता है, लेकिन मुझे यह कैसे करना है इस बारे में जानकारी नहीं मिल सकती है ... –

+1

'कार्य के लिए इसके लिए डिज़ाइन नहीं किया गया था। आरएक्स टीम ने 'आईएएसआईएनसीएन्यूमेरेटर' पर काम करना शुरू किया जिसमें आपके द्वारा वर्णित व्यवहार है (इसमें एक पुराना चैनल 9 वीडियो है), लेकिन यह काम सभी छोड़ दिया गया है क्योंकि यह लगभग सही दृष्टिकोण नहीं है। मैं आपको इसके बजाय नियमित आरएक्स का उपयोग करने की सलाह देता हूं। –

+0

निरंतरताओं की वैश्विक सूची में निरंतरता जोड़कर मैं अपने आप को एक कस्टम प्रतीक्षा के भीतर खोल सकता हूं, मैं जो भी चाहता हूं उसका अनुकरण कर सकता हूं। मुझे अभी भी एक कार्य वापस करने के लिए मजबूर होना पड़ रहा है यदि मैं एक गैर-शून्य एसिंक विधि चाहता हूं, और यह अजीब लगता है! –

संबंधित मुद्दे