我目前正在阅读Stephen Cleary撰写的“ 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通过VS第一异常ExceptionDispatchInfo带await)。在Stephen Toub的“ .NET 4.5中的任务异常处理”中有更详细的讨论:blogs.msdn.com/b/pfxteam/archive/2011/09/28/…)
downloadTask和timeoutTask?他们在做什么?