Używam zadania Parallel Library do uruchomienia zadania, które po anulowaniu wywołuje wyjątek OperationCanceledException, który jest następnie przechwytywany za pomocą wyjątku AggregateException, w następujący sposób. Wyjątek AggregateException zawiera listę wyjątków TaskCanceledExceptions, które odpowiadają wyrzuconym wyjątkom. Niestety, te wyjątki TaskCanceledException wydają się tracić dane śledzenia stosu generowane przez oryginalne wyjątki. Czy to według projektu?TaskCanceledException w wyjątku AggregateException nie zawiera śledzenia stosu
try
{
task1.Wait();
}
catch (AggregateException aggEx)
{
var tcex = ex as TaskCanceledException;
if (tcex != null)
{
Debug.WriteLine("InnerException:{0}, Message:{1}, Source:{2}, StackTrace: {3}",
tcex.InnerException, tcex.Message, tcex.Source, tcex.StackTrace);
return true;
}
else
{
return false;
}
}
Wynik:
InnerException:, Message:A task was canceled., Source:, StackTrace:
Zaktualizuj swój kod, aby odzwierciedlał opublikowane wyniki! :) –
Czy linia "if (tcex! = Null)" jest poprawna? Wygląda na to, że powinno być "if (tcex == null)" –
@MatthewWatson - to 'if' odfiltrowuje inne wyjątki. –