Я хочу, чтобы Task.WaitAll() вырвался, если какая-либо из запущенных задач выдает исключение, так что мне не нужно ждать 60 секунд, чтобы закончить. Как мне добиться такого поведения? Если WaitAll() не может этого достичь, есть ли другая функция С# или обходной путь?
Task task1 = Task.Run(() => throw new InvalidOperationException());
Task task2 = ...
...
try
{
Task.WaitAll(new Task[]{task1, task2, ...}, TimeSpan.FromSeconds(60));
}
catch (AggregateException)
{
// If any exception thrown on any of the tasks, break out immediately instead of wait all the way to 60 seconds.
}