私は現在、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回目の待機を行う必要があるのはなぜですか?
AggregateException
with Result
vs first exception via ExceptionDispatchInfo
with await
)。Stephen Toubの「.NET 4.5でのタスク例外処理」でより詳細に議論されています:blogs.msdn.com/b/pfxteam/archive/2011/09/28/…)
downloadTask
とtimeoutTask
?彼らは何をしますか?