क्या यह थ्रेड का उपयोग करने के पुराने तरीके को पूरी तरह से बदल सकता है?
नहीं। एक धागा कई और उपयोगी चीजें कर सकता है। Await विशेष रूप से कुछ समय लेने के लिए डिज़ाइन किया गया है, आमतौर पर एक I/O अनुरोध। I/O अनुरोध पूरा होने पर पारंपरिक रूप से कॉलबैक के साथ किया गया था। इन कॉलबैक पर निर्भर कोड लिखना काफी कठिन है, इसका इंतजार बहुत आसान है।
जो भी थ्रेड असीमित रूप से कर सकता है करने में सक्षम है?
काफी हद तक। प्रतीक्षा करें देरी से निपटने का ख्याल रखता है, यह अन्यथा ऐसा नहीं करता है जो थ्रेड करता है। प्रतीक्षा अभिव्यक्ति, प्रतीक्षा कीवर्ड के दाईं ओर क्या है, यह काम पूरा हो जाता है। आदर्श रूप से यह किसी थ्रेड का उपयोग नहीं करता है, यह एक ड्राइवर अनुरोध पोस्ट करता है और एक बार जब ड्राइवर डेटा हस्तांतरण पूरा करता है तो यह एक पूर्णता अधिसूचना कॉलबैक उत्पन्न करता है। नेटवर्किंग अब तक का सबसे आम उपयोग है, सैकड़ों मिलीसेकंड की विलंबता आम हैं और डेस्कटॉप या लैन से "क्लाउड" में चल रही सेवाओं का एक अनिवार्य दुष्प्रभाव है। ऐसी सेवाओं का उपयोग सिंक्रनाइज़ेशन से यूआई को काफी उत्तरदायी बना देगा।
केवल WebClient.DownloadStringAsync की तरह कुछ तरीकों
नहीं। आप किसी भी विधि है कि एक टास्क रिटर्न के साथ उपयोग कर सकते हैं के साथ प्रयोग किया जा सकता है। XxxxAsync() विधियां सामान्य संचालन के लिए .NET ढांचे में बस सटीक हैं जो समय लेती हैं। एक वेब सर्वर से डेटा डाउनलोड करने की तरह।
स्रोत
2013-03-01 02:34:02
थ्रेड और असिंक/Await असंबंधित विशेषताएं हैं। आप उन्हें जोड़ सकते हैं, लेकिन आपको नहीं करना है। – dtb
मैंने सोचा कि Async/Await वही काम कर रहा है जो 'नया थ्रेड (() => {कुछ कार्य})। प्रारंभ करें();' कर रहा है? यही है ना ? –
नहीं। आपकी धारणा सही नहीं है। आप [टास्क.रुन] (http://msdn.microsoft.com/en-us/library/hh195051.aspx) (टीपीएल) के बारे में सोच रहे होंगे, जो अक्सर असिनक/Await के साथ संयुक्त होता है, लेकिन यह भी असंबंधित है और करता है इसके साथ उपयोग नहीं किया जाना चाहिए। – dtb