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