BackgroundWorker&Exceptions

Jie*_*eng 5 c# exception backgroundworker

MSDN文档说:

如果操作引发了代码无法处理的异常,则BackgroundWorker会捕获异常并将其传递到RunWorkerCompleted事件处理程序,并将其作为System.ComponentModel.RunWorkerCompletedEventArgs的Error属性公开.

但是当我尝试的时候

_workers[i].DoWork += (s, args) =>
{
    throw new Exception("Error!");
};
Run Code Online (Sandbox Code Playgroud)

我得到Exception Unhandled错误......代码似乎没有RunWorkerCompleted.如何处理错误?

UPDATE

我已经设置了简单的处理程序

_workers[i].DoWork += (s, args) =>
{
    throw new Exception("Error!");
}
...
_workers[i].RunWorkerCompleted += (s, args) =>
{
    if (args.Error != null) {
        string dummy = args.Error.Message;
    }
    ...
};
Run Code Online (Sandbox Code Playgroud)

代码永远不会离开 DoWork

Roa*_*ior 3

如果抛出异常并通过用户框架,但随后未被用户代码捕获,则将其视为“用户未处理”。

所以我认为有3种可能:

  • 这是第一次出现异常- 因此如果按 F5,异常将正常传播。
  • 单击异常助手中的“编辑代码”。然后进行一些编辑并继续来解决问题。
  • 转到“调试”->“异常”并取消选择“用户未处理”列。