Зараз я читаю " Конкурс у 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). Більш детально обговорюється в розділі «Завдання обробки виключень в .NET 4.5» Стівена Toub в: blogs.msdn.com/b/pfxteam/archive/2011/09/28 / ... )
downloadTaskіtimeoutTask? Що вони роблять?