इस पर विचार करें,का इंतजार नहीं कर सकते async लैम्ब्डा
Task task = new Task (async() =>{
await TaskEx.Delay(1000);
});
task.Start();
task.Wait();
कॉल task.Wait() कार्य पूरा होने और अगली पंक्ति तुरंत क्रियान्वित किया जाता है के लिए इंतजार नहीं है, लेकिन अगर मैं एक में async लैम्ब्डा अभिव्यक्ति लपेट विधि कॉल, कोड अपेक्षित के रूप में काम करता है।
private static async Task AwaitableMethod()
{
await TaskEx.Delay(1000);
}
तो (svick से अद्यतन अनुसार टिप्पणी)
await AwaitableMethod();
में 'आप वास्तव में लौटने और प्रतीक्षा बुला कार्य .Delay से लौटे पर कर रहे हैं AwaitableMethod'() विधि (मुझे लगता है कि यह एक 'कार्य' देता है)। Async lambda में आप कॉल कर रहे हैं 'कार्य कार्य' पर प्रतीक्षा करें। लेकिन फिर भी, मुझे कोई स्पष्टीकरण नहीं है। –
आपको 'प्रतीक्षा करें' 'के साथ' प्रतीक्षा 'मिश्रण के बारे में बहुत सावधान रहना चाहिए। कई मामलों में, जो डेडलॉक्स का कारण बन सकता है। – svick
@ एसविक ने एक प्रतीक्षा [उदाहरण] (http://stackoverflow.com/a/11179035/815938) 'प्रतीक्षा करें 'के साथ' प्रतीक्षा करें' 'प्रतीक्षा करें() ' – kennyzx