2010-05-19 18 views
6

एसिंक प्रतिनिधि और एसिंक विधि के बीच क्या अंतर है?एसिंक प्रतिनिधि और एसिंक विधि के बीच क्या अंतर है?

किसी ने मुझे बताया कि वे सी # में अलग थे, लेकिन मैंने सोचा कि वे एक ही बात थे।

+0

[असिंक्रोनस विधियों और एसिंक्रोनस प्रतिनिधियों] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1418392/asynchronous-methods-and-asynchronous-delegates) – Oliver

उत्तर

6

पहले प्रतिनिधि। जब आप एक घोषित, संकलक स्वचालित रूप से प्रतिनिधि प्रकार के लिए तीन तरीकों उत्पन्न करता है:, (...)

  • आह्वान प्रतिनिधि घोषणा
  • BeginInvoke रूप में एक ही तर्क लेने (..., AsyncCallback, वस्तु) जहां ... हैं घोषित तर्क
  • EndInvoke (IAsyncResult)

आह्वान() विधि कॉल प्रतिनिधि लक्ष्य तुल्यकालिक, बस एक सादे कॉल की तरह। BeginInvoke() विधि असीमित कॉल है, लक्ष्य विधि थ्रेड-पूल थ्रेड पर चलती है। कॉल के लिए आवंटित संसाधनों को जारी करने के लिए विधि पूर्ण होने के बाद EndInvoke() कॉल की आवश्यकता होती है और कॉल को निरस्त करने वाले किसी भी अपवाद को फिर से उठाना पड़ता है।

.NET ढांचे में कई कक्षाएं हैं जिनमें BeginXxxx() विधि है। एमएसडीएन लाइब्रेरी उन्हें एसिंक्रोनस ऑपरेशंस, एसिंक्रोनस विधियों के रूप में संदर्भित करती है। वे एक ऑपरेशन शुरू करते हैं जो असीमित रूप से पूरा करता है।

.NET 4.5 से शुरू करना और सी # संस्करण 5 द्वारा समर्थित, एसिंक्रोनस ऑपरेशंस जिसका नाम असिनक में समाप्त होता है और एक कार्य वापस में अभिव्यक्ति का इंतजार किया जा सकता है। जब किसी विधि में उपयोग किया जाता है जिसमें async संशोधक है। यह एसिंक्रोनस ऑपरेशंस से निपटने में बहुत सरल बनाता है, जो WinRT में महत्वपूर्ण है जहां कई सामान्य ऑपरेशन असीमित होते हैं।

+5

यह अब सी # 5 में नहीं है (विजुअल स्टूडियो देव 11 पूर्वावलोकन)। सी # के पास "async" विधियों के लिए उचित समर्थन है। –

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