Task Parallel Library を使用してタスクを実行しています。タスクをキャンセルすると、OperationCanceledException がスローされ、次のように AggregateException を使用してキャッチされます。AggregateException には、スローされた例外に対応する TaskCanceledExceptions のリストが含まれています。残念ながら、これらの TaskCanceledExceptions は、元の例外によってスローされたスタック トレースを失っているようです。これは設計によるものですか?
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;
}
}
結果:
InnerException:, Message:A task was canceled., Source:, StackTrace: