현재 Stephen Cleary의 " Concurrency in C # Cookbook "을 읽고 있는데 다음 기술을 발견했습니다.
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTask
호출이고 httpclient.GetStringAsync
, 그리고 timeoutTask
실행된다 Task.Delay
.
시간 초과되지 않은 downloadTask
경우 이미 완료된 것입니다. downloadTask.Result
작업이 이미 완료된 경우 반환하는 대신 두 번째 대기를 수행해야하는 이유는 무엇 입니까?
AggregateException
로 Result
를 통해 첫 번째 예외 대 ExceptionDispatchInfo
와 await
). : 스티븐 Toub의 ".NET 4.5 태스크 예외 처리"에서 자세히 설명 blogs.msdn.com/b/pfxteam/archive/2011/09/28/... )
downloadTask
이며timeoutTask
? 그들은 무엇을합니까?