У меня проблема с обработкой исключений и параллельными задачами.Task.WaitAll и исключения
Код, показанный ниже, запускает 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
описывает свою первую попытку быть правильным. Пожалуйста, помогите мне понять, почему он не работает.
Что делают TaskMethod1 и TaskMethod2? Какой поток вы выполняете? Если бы вы могли превратить это в короткий, но * полный * пример (например, мой ответ), который действительно помог бы. –