2012-12-05 10 views
8

में निरंतरता के साथ प्रतीक्षा करें। मैंने .NET 4.0 में async पैकेज स्थापित किया है। यह मुझे मेरे अनुप्रयोगों में एसिंक/प्रतीक्षा कीवर्ड का उपयोग करने की क्षमता देता है।Async/task.run बनाम task.run और .NET 4.0

जैसा कि मैंने अब तक समझा है, मैं अपने कार्य को लपेट सकता हूं। Asunc/प्रतीक्षा में कोड कोड और निरंतरता के साथ task.run का उपयोग करने के समान परिणाम प्राप्त करें।

क्या यह सच है? या गहरे मतभेद हैं?

उत्तर

11

यह इस बात पर निर्भर करता है कि आप ContinueWith के साथ क्या कर रहे हैं। लेकिन हां, अक्सर आप await का उपयोग उसी प्रभाव को प्राप्त करने के लिए कर सकते हैं जो आपने पहले ContinueWith का उपयोग करके हासिल किया था। आप नहीं कर सकते हैं जैसे "इस कोड के साथ केवल विफलता पर जारी रखें" - आप इसके लिए सामान्य अपवाद हैंडलिंग का उपयोग करें। जैसा कि एलेक्सएच कहते हैं, आपके async विधि के समग्र व्यवहार के संदर्भ में और अंतर आएगा - लेकिन ज्यादातर मामलों में मैं कहूंगा कि वांछित है। असल में, कोड की asynchrony बहती है, तो async तरीकों को और अधिक async तरीकों कॉल करने के लिए, आदि मैं सुझाव है कि आप क्या async/await के बारे में है के बारे में पढ़ें करते हैं

(वहाँ संसाधनों का भार कर रहे हैं - मैं सलाह देते हैं एक प्रारंभिक बिंदु के रूप MSDN पर "Consuming the Task-based Asynchronous Pattern" पेज

4

वहाँ एक अंतर अगर आप अपने कार्यों प्रोटोटाइप में async कीवर्ड परिचय हो जाएगा;।। अपवाद टास्क फोन करने वाले का स्तर पर फेंक दिया जाएगा async कीवर्ड के बिना, आप की जाँच करने के लिए है अपवाद प्राप्त करने के लिए TaskContinuationOptions.OnlyOnFaulted स्थिति।