Actualmente estoy leyendo " Concurrencia en C # Cookbook " de Stephen Cleary, y noté la siguiente técnica:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTaskes una llamada a httpclient.GetStringAsyncy se timeoutTaskestá ejecutando Task.Delay.
En el caso de que no se haya agotado el tiempo de espera, entonces downloadTaskya está completado. ¿Por qué es necesario esperar un segundo en lugar de regresar downloadTask.Result, dado que la tarea ya está completada?
AggregateExceptioncon Resultvs primera excepción vía ExceptionDispatchInfocon await). Discutido con más detalle en "Task Exception Handling in .NET 4.5" de Stephen Toub: blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTaskytimeoutTask? ¿Qué hacen?