У меня проблема с обработкой исключений и параллельными задачами.
Приведенный ниже код запускает 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
описывает мою первую попытку быть правильной. Пожалуйста, помогите мне понять, почему он не работает.