【发布时间】:2014-07-09 12:23:51
【问题描述】:
我必须在一个函数中执行两个任务,每个任务都有 Try Catch 来处理异常。 但是我想知道会发生什么,如果我在第一个任务中出现异常并且第二个任务也以异常结束时从函数返回。 当 GC 对该 Task 对象调用 Finalize 时,第二个任务的异常是否会未处理并导致应用程序崩溃。
示例代码:
public void ProcessJob()
{
var Job1 = Task.Factory.StartNew(() => Dojob1());
var Job2 = Task.Factory.StartNew(() => Dojob2());
try
{
Job1.Wait();
}
catch(Exception ex)
{
//Handle Exception
return;
}
//some other actions.
try
{
Job2.Wait();
}
catch(Exception ex)
{
//Handle Exception
return;
}
}
【问题讨论】:
-
如果你同步等待任务完成,为什么要首先使用任务?为什么不直接调用
Dojob1()和Dojob2()?通常,为了处理错误,您可以向任务添加延续并检查这些延续中任务的状态(包括任何抛出的异常)。这是一个异步设置,你并没有真正使用它。 -
任务中未处理的异常不再关闭应用程序(自 .Net 4.5 起)
-
@大卫。感谢您的回复。上面的代码只是原始问题的概述。我想知道上面代码的结果。
-
@I3arnon 谢谢你的意见。但我用的是 4。
标签: c# parallel-processing task-parallel-library task