为什么没有Task.WaitAny抛出异常?

时间:2015-04-16 16:52:46

标签: c# multithreading parallel-processing task-parallel-library

在以下代码"内部捕获块"永远不会打印。 "最后一行"虽然打印。为什么这样?请帮忙。

Task task1 = Task.Factory.StartNew(() =>
{                
    throw new Exception("some exception");             
});

try
{
    Task.WaitAny(new Task[] { task1 });
}
catch(Exception e)
{
    Console.WriteLine("Inside catch block.");
}

Console.WriteLine("Final line.");

1 个答案:

答案 0 :(得分:-1)

这是因为您的代码在不同的线程中执行,但您可以使用以下代码捕获在不同线程中发生的异常

Task task1 = Task.Factory.StartNew(() =>
{
    throw new Exception("some exception");
});

try
{
    task1.Wait();
}
catch (AggregateException ex)
{
    Console.WriteLine(ex);
}