根据MSDN文档所述:
如果操作引发了您的代码未处理的异常,BackgroundWorker会捕获该异常并将其传递到RunWorkerCompleted事件处理程序中,在那里它作为System.ComponentModel.RunWorkerCompletedEventArgs的Error属性暴露出来。
但是当我尝试时:
_workers[i].DoWork += (s, args) =>
{
throw new Exception("Error!");
};
我收到了“未处理异常错误”的信息... 代码似乎不会进入“RunWorkerCompleted”方法。那么错误应该如何处理?
更新
我已经设置了简单的处理程序。
_workers[i].DoWork += (s, args) =>
{
throw new Exception("Error!");
}
...
_workers[i].RunWorkerCompleted += (s, args) =>
{
if (args.Error != null) {
string dummy = args.Error.Message;
}
...
};
代码永远不会离开
DoWork
函数。