我有一些簡單的代碼作爲攝製:等待一個任務有OnlyOnFaulted延續導致AggregateException
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);
}
然而,我卻得到了意想不到TaskCanceledException在try catch塊被拋出(它在AggregateException InnerExceptions對象)。 「任務被取消了」。
爲什麼我會得到這個異常?任務的延續永遠不會發生,它沒有產生異常,但我仍然得到了等待時的聚合異常....
我希望有人能解釋這對我有意義:)
我有完全一樣的情況下,你。我認爲只是傳播上一個任務的結果會更加優雅和直觀。拋出一個TaskCanceledException是相當令人吃驚的...... – NickL