У меня проблема с обработкой исключений и параллельными задачами.
Код, показанный ниже, запускает 2 задачи и ожидает их завершения. Моя проблема в том, что в случае, если задача вызывает исключение, обработчик catch никогда не достигается.
List<Task> tasks = new List<Task>();
try
{
tasks.Add(Task.Factory.StartNew(TaskMethod1));
tasks.Add(Task.Factory.StartNew(TaskMethod2));
var arr = tasks.ToArray();
Task.WaitAll(arr);
}
catch (AggregateException e)
{
// do something
}
Однако, когда я использую следующий код для ожидания задач с тайм-аутом, исключение перехватывается.
while(!Task.WaitAll(arr,100));
Кажется, я что-то упускаю, поскольку документация для WaitAll
описывает мою первую попытку как правильную. Пожалуйста, помогите мне понять, почему это не работает.