2012-10-23 20 views
7

के लिए इस कोड पर विचार करें:क्या हमें हमेशा async कीवर्ड का उपयोग करने की आवश्यकता है?

await TheBestMethodEverX(); 

इन दोनों तरीकों और क्यों बीच क्या अंतर है:

public async Task TheBestMethodEver1() 
{ 
// code skipped 
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
{ 
    // code skipped 
}); 

}

public Task TheBestMethodEver2() 
{ 
    // code skipped 
    return Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
    { 
    // code skipped 
    }).AsTask(); 
} 

इन तरीकों में से किसी भी तरह कहा जा सकता है क्या मुझे आमतौर पर पहले का उपयोग करना चाहिए?

उत्तर

2

इन दो तरीकों के बीच अंतर क्या है और मुझे आमतौर पर पहले का उपयोग क्यों करना चाहिए?

पहले व्यक्ति में एक कंपाइलर से उत्पन्न राज्य मशीन है और ढेर पर अतिरिक्त कचरा बनाता है। इसलिए दूसरा एक को प्राथमिकता दी जाती है।

अधिक जानकारी के लिए, क्लासिक Zen of Async वीडियो देखें।

0

यदि एकमात्र इंतजार आखिरी कथन के रूप में है (और आप किसी अन्य प्रतीक्षा योग्य वस्तु के विपरीत एक कार्य का इंतजार कर रहे हैं), तो आप इसे छोड़ सकते हैं और केवल कार्य को वापस कर सकते हैं। एसिंक संशोधक को जोड़ना आसान है, इसे भविष्य में जरूरी होना चाहिए।

+0

बेशक, मैं किसी भी विधि को लागू कर सकता हूं, लेकिन यह विचारधारात्मक प्रश्न है। किस तरह से वरीयता दी जाती है और क्यों? सबसे अच्छा अभ्यास क्या है? –

+0

@ ए-छात्र: जिस उत्तर का आप जवाब दे रहे हैं, वह सुझाव देता है कि आपका 'प्रतीक्षा' अनावश्यक है और इसे छोड़ा जा सकता है। क्या अनावश्यकता उस समाधान को पसंद करने का एक अच्छा कारण नहीं है? –