मैं वर्तमान में स्टीफन क्लीरी द्वारा " कॉनएरेबिलिटी इन सी # कुकबुक " पढ़ रहा हूं , और मैंने निम्नलिखित तकनीक पर ध्यान दिया है:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTaskएक कॉल है httpclient.GetStringAsync, और timeoutTaskनिष्पादित कर रहा है Task.Delay।
इस घटना में कि यह समय समाप्त नहीं हुआ, फिर downloadTaskपहले से ही पूरा हो गया है। वापसी के बजाय दूसरा इंतजार करना क्यों आवश्यक है downloadTask.Result, यह देखते हुए कि कार्य पहले ही पूरा हो चुका है?
AggregateExceptionके साथ Resultके माध्यम से बनाम पहले अपवाद ExceptionDispatchInfoके साथ await)। स्टीफन टौब के "टास्क एक्ससेप्शन हैंडलिंग इन .NET 4.5" के बारे में अधिक विस्तार से चर्चा की गई: blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTaskऔरtimeoutTask? वो क्या करते हैं?