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;
downloadTaskadalah panggilan ke httpclient.GetStringAsync, dan timeoutTasksedang dijalankan Task.Delay.
Jika tidak waktu tunggu, maka downloadTasksudah selesai. Mengapa perlu melakukan menunggu kedua daripada kembali downloadTask.Result, mengingat tugas sudah selesai?
AggregateExceptiondengan Resultpengecualian pertama vs melalui ExceptionDispatchInfodengan await). Dibahas secara lebih rinci dalam Stephen Toub "Penanganan Pengecualian Tugas di .NET 4.5": blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTaskdantimeoutTask? Apa yang mereka lakukan?