我正在查看来自 MSDN @ 的 TPL 异常处理示例
http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx
代码的基本形式是:
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
try
{
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}
我的问题是:这是竞争条件吗?如果 task1 在 try 执行之前抛出会发生什么?我是否错过了阻止这场比赛的东西?
不应该这样写吗:
try
{
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}