【发布时间】:2011-07-04 15:59:29
【问题描述】:
我有一些简单的代码作为重现:
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 块中抛出了一个意外的 TaskCanceledException(它位于 AggregateException InnerExceptions 对象中)。 “任务已取消”。
为什么我会收到此异常?任务的继续永远不会触发,它没有产生异常,但我在等待时仍然得到聚合异常......
我希望有人能解释这对我有什么意义:)
【问题讨论】:
-
我的情况和你一模一样。我认为只传播上一个任务的结果会更加优雅和直观。抛出一个 TaskCanceledException 是相当令人惊讶的......
标签: c# parallel-processing task task-parallel-library pfx