我有一个小的 WinForms 应用程序,它利用一个 BackoundWorker 对象来执行一个长时间运行的操作。
后台操作偶尔会抛出异常,通常是在某人打开了正在重新创建的文件时。
不管代码是否从 IDE 运行。NET 会弹出一个错误对话框,通知用户发生了未处理的异常。使用发布配置编译代码也不会改变这一点。
根据 MSDN:
如果操作引发了代码不能处理的异常,Background Worker 将捕获该异常并将其传递给 RunWorkerCompleted 事件处理程序,在该处将该异常公开为 System 的 Error 属性。组件模型。.::.RunWorkerCompletedEventArgs.如果在 VisualStudio 调试器下运行,则调试器将在 DoWork 事件处理程序中引发未处理异常的点中断。
我希望这些异常能够偶尔抛出,并且希望在 RunWorkerCompleted 事件中处理它们,而不是在 DoWork。我的代码工作正常,错误在 RunWorkerCompleted 事件中得到了正确的处理,但是我无论如何也不能弄清楚如何停止。NET 错误对话框抱怨“未处理的异常”发生。
后台工作者不是应该自动捕捉错误吗?MSDN 文档不是这么说的吗?我需要做什么来通知。NET,这个错误 是正在处理,同时仍然允许异常传播到 RunWorkerCompletedEventArgs 的 Error 属性?