Ich lese gerade " Concurrency in C # Cookbook " von Stephen Cleary und habe die folgende Technik bemerkt:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTaskist ein Aufruf an httpclient.GetStringAsyncund timeoutTaskwird ausgeführt Task.Delay.
Falls es keine Zeitüberschreitung gab, downloadTaskist es bereits abgeschlossen. Warum muss eine Sekunde gewartet werden, anstatt zurückzukehren downloadTask.Result, da die Aufgabe bereits abgeschlossen ist?
AggregateExceptionmit Resultvs erster Ausnahme über ExceptionDispatchInfomit await). Ausführlicher besprochen in Stephen Toubs "Task Exception Handling in .NET 4.5": blogs.msdn.com/b/pfxteam/archive/2011/09/28/… )
downloadTaskundtimeoutTask? Was machen Sie?