私は再現としていくつかの簡単なコードを持っています:
var taskTest = Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(5000);
}).ContinueWith((Task t) =>
{
Console.WriteLine("ERR");
}, TaskContinuationOptions.OnlyOnFaulted);
try
{
Task.WaitAll(taskTest);
}
catch (AggregateException ex)
{
foreach (var e in ex.InnerExceptions)
Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace);
}
ただし、try catchブロック(AggregateException InnerExceptionsオブジェクトにあります)で予期しないTaskCanceledExceptionがスローされます。「タスクがキャンセルされました」。
なぜこの例外が発生するのですか?タスクの継続は起動せず、例外は生成されませんでしたが、待機中に集約例外が発生します。
誰かがこれが私にとってどのように理にかなっているのか説明できることを願っています:)