我有一个小型的WinForms应用程序,该应用程序使用BackgroundWorker对象执行长时间运行的操作。
后台操作偶尔会引发异常,通常是当有人打开了正在重新创建的文件时。
不管代码是否从IDE运行,.NET都会弹出一个错误对话框,通知用户发生了未处理的异常。使用Release配置编译代码也不会对此进行更改。
根据MSDN:
如果该操作引发您的代码无法处理的异常,则BackgroundWorker将捕获该异常并将其传递到RunWorkerCompleted事件处理程序,在该事件处理程序中将其公开为System.ComponentModel .. ::。RunWorkerCompletedEventArgs的Error属性。如果在Visual Studio调试器下运行,则调试器将在DoWork事件处理程序中引发未处理异常的点处中断。
我希望有时会抛出这些异常,并且希望在RunWorkerCompleted事件中而不是在DoWork中处理它们。我的代码正常运行,并且在RunWorkerCompleted事件中正确处理了错误,但是我终生无法弄清楚如何停止抱怨“未处理的异常”的.NET错误对话框。
BackgroundWorker是否应该自动捕获该错误?这不是MSDN文档说明的吗?我需要做什么做的通知.NET,这个错误是被处理,同时仍允许例外propage到RunWorkerCompletedEventArgs的错误属性?