我有这个简单的 TPL 代码:
var t = Task.Factory.StartNew(() => { throw null; })
.ContinueWith((ant) => { Console.WriteLine("Success"); },
TaskContinuationOptions.OnlyOnRanToCompletion)
.ContinueWith((ant) => { Console.WriteLine("Error"); },
TaskContinuationOptions.OnlyOnFaulted);
t.Wait();
我得到一个未处理的异常:
Unhandled Exception: System.AggregateException: One or more errors occurred.
...
如果我t.Wait()
输入 a try-catch
,异常就会被捕获,我知道它违背了使用异常延续的全部意义。现在,如果我删除完成延续,任务引发的异常将在异常延续中处理,我没有得到上述异常。有人可以对正在发生的事情有所了解吗?我正在使用 .NET 4.0 的 VS2010 SP1