私は現在、Stephen Clearyの「C#クックブックの並行性」を読んでおり、次のテクニックに気づきました。
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTaskへの呼び出しでhttpclient.GetStringAsync、timeoutTask実行中Task.Delayです。
タイムアウトしなかった場合downloadTaskは、すでに完了しています。downloadTask.Resultタスクがすでに完了している場合、を返すのではなく、2回目の待機を行う必要があるのはなぜですか?
AggregateExceptionwith Resultvs first exception via ExceptionDispatchInfowith await)。Stephen Toubの「.NET 4.5でのタスク例外処理」でより詳細に議論されています:blogs.msdn.com/b/pfxteam/archive/2011/09/28/…)
downloadTaskとtimeoutTask?彼らは何をしますか?