Obecnie czytam książkę „ Współbieżność w C # Cookbook ” autorstwa Stephena Cleary'ego i zauważyłem następującą technikę:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTaskjest wezwaniem do httpclient.GetStringAsynci timeoutTaskwykonuje Task.Delay.
W przypadku, gdy nie upłynął limit czasu, downloadTaskjest już zakończony. Dlaczego trzeba czekać sekundę zamiast wracać downloadTask.Result, skoro zadanie zostało już wykonane?
AggregateExceptionz Resultpierwszym wyjątkiem przez ExceptionDispatchInfowith await). Bardziej szczegółowo omówione w artykule Stephena Toub „Task Exception Handling in .NET 4.5”: blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTaskitimeoutTask? Co oni robią?