c# – BackgroundWorker中的未处理的异常

我的WinForms应用程序使用大量的BackgroundWorker对象来检索信息从数据库。我使用BackgroundWorker,因为它允许UI在长时间运行的数据库查询期间保持解锁,并简化了我的线程模型。

我偶尔会在一些后台线程中出现DatabaseExceptions,我在调试时在工作线程中至少看到过这些异常中的一个。我相当确信这些例外是超时,我认为它是合理的期望不时。

我的问题是当在这些后台工作线程之一发生未处理的异常时会发生什么。

我不认为我可以在另一个线程中捕获异常,但我可以期望我的WorkerCompleted方法执行吗?有没有任何属性或方法的BackgroundWorker我可以询问异常?

如果操作引发了您的代码未处理的异常,BackgroundWorker将捕获异常并将其传递到RunWorkerCompleted事件处理程序中,并在其中显示为System.ComponentModel.RunWorkerCompletedEventArgs的Error属性。如果你在Visual Studio调试器下运行,调试器将在DoWork事件处理程序中抛出未处理的异常的点处中断。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.dowork.aspx

翻译自:https://stackoverflow.com/questions/258662/unhandled-exceptions-in-backgroundworker

转载注明原文:c# – BackgroundWorker中的未处理的异常