ध्यान दें कि (इसी *Completed
घटनाओं के साथ) सबसे *Async
तरीकों Event-Based Asynchronous Pattern उपयोग कर रहे हैं। पुराना (लेकिन अभी भी पूरी तरह से मान्य) Begin*
और End*
Asynchronous Programming Model नामक एक पैटर्न है। Socket
कक्षा इस नियम का अपवाद है; इसकी *Async
विधियों में कोई संबंधित घटना नहीं है; यह अनिवार्य रूप से अत्यधिक स्मृति आवंटन से बचने के लिए एपीएम किया जाता है।
एपीएम और ईबीएपी के बीच सबसे बड़ा अंतर धागा पूर्णता अधिसूचना के लिए उपयोग किया जाता है। एपीएम थ्रेड पूल थ्रेड पर वापस कॉल करेगा (जब तक कि अनुरोध सिंक्रनाइज़ नहीं हो जाता)। ईबीएपी यूआई थ्रेड पर वापस कॉल करने के लिए एक क्रॉस-फ्रेमवर्क रणनीति का उपयोग करेगा (यदि ऑपरेशन यूआई थ्रेड से शुरू किया गया था)।
हालांकि, Task Parallel Library के आधार पर एपीएम और ईबीएपी दोनों को अधिक लचीला दृष्टिकोण के साथ प्रतिस्थापित किया जा रहा है। चूंकि टीपीएल आसानी से एपीएम लपेट सकता है, इसलिए पुराने वर्गों को सीधे अपडेट नहीं किया जाएगा; पुरानी एपीएम विधियों के लिए Task
समकक्ष प्रदान करने के लिए एक्सटेंशन विधियों का उपयोग किया जाता है।
अपडेट 2012-07-14: जब मैंने कहा था कि "पुराने वर्गों को सीधे अपडेट नहीं किया जाएगा" तो मैं गलत था। प्रदर्शन कारणों से, बीसीएल/टीपीएल टीमों ने प्रत्येक बीसीएल प्रकार की समीक्षा करने और विस्तार विधियों का उपयोग करने के बजाय सीधे टीएपी विधियों को जोड़ने का फैसला किया। ये परिवर्तन .NET 4.5 में होंगे।
स्रोत
2010-06-21 02:45:07