मैं वर्तमान में स्टीफन क्लीरी द्वारा " कॉनएरेबिलिटी इन सी # कुकबुक " पढ़ रहा हूं , और मैंने निम्नलिखित तकनीक पर ध्यान दिया है:
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
? वो क्या करते हैं?