它看起来像 MSDN 上用于处理任务中引发的异常的模式同步代码。这是来自MSDN 页面的代码:
var task1 = Task.Factory.StartNew(() =>
{
throw new MyCustomException("I'm bad, but not too bad!");
});
try
{
task1.Wait();
}
catch (AggregateException ae)
{
// Code removed
}
该调用task1.Wait();
导致调用线程阻塞,直到 task1 完成,对吗?如果是这样,那么我根本看不到使用 Task 的理由,因为无论是使用 Task 同步调用还是异步调用代码,调用线程都会阻塞,直到代码完成运行或抛出异常。
另外,如果 task1 在调用代码进入 try-catch 块之前抛出异常会发生什么?如果可能,try-catch 块将不会捕获 AggregateException。
如果我希望调用线程被通知任务中引发的异常,我应该怎么做?我认为我不应该打电话task1.Wait();
来收到异常通知。我知道,ContinueWith()
但代码也在ContinueWith()
一个单独的线程中运行,而不是调用线程。