że problem z obsługi wyjątków i zadania równolegle.Task.WaitAll i wyjątkami
Kod pokazany poniżej rozpoczyna 2 zadania i czeka na nich do końca. Mój problem polega na tym, że w przypadku, gdy zadanie zgłasza wyjątek, program obsługi catch nigdy nie zostanie osiągnięty.
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
}
Jednak kiedy użyć następującego kodu czekać do zadań z timeout, wyjątek zostanie złapany.
while(!Task.WaitAll(arr,100));
I wydaje się, że brakuje czegoś, jako dokumentacja dla WaitAll
opisuje moją pierwszą próbę być prawidłowa. Pomóż mi zrozumieć, dlaczego to nie działa.
Czego TaskMethod1 i TaskMethod2 zrobić? W jakim wątku jesteś wykonywany? Jeśli mógłbyś zamienić to w krótki, ale * kompletny * przykład (jak moja odpowiedź), który by naprawdę pomógł. –