Saat ini saya membaca " Concurrency in C # Cookbook " oleh Stephen Cleary, dan saya memperhatikan teknik berikut:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTask
adalah panggilan ke httpclient.GetStringAsync
, dan timeoutTask
sedang dijalankan Task.Delay
.
Jika tidak waktu tunggu, maka downloadTask
sudah selesai. Mengapa perlu melakukan menunggu kedua daripada kembali downloadTask.Result
, mengingat tugas sudah selesai?
AggregateException
dengan Result
pengecualian pertama vs melalui ExceptionDispatchInfo
dengan await
). Dibahas secara lebih rinci dalam Stephen Toub "Penanganan Pengecualian Tugas di .NET 4.5": blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTask
dantimeoutTask
? Apa yang mereka lakukan?