BackgroundWorker _ AppDomain.UnhandledException未捕获异常

时间:2013-12-05 19:27:04

标签: c# wpf backgroundworker

我正在使用以下代码来处理来自BackgroundWorker的异常。问题是异常不支持AppDomain.CurrentDomain.UnhandledException。

App.xaml.cs:

private void Application_Startup(object sender, StartupEventArgs e) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; }

我在主应用程序中有一个BackgroundWorker池。每个BackgroundWorker代表一个进度条。 DoWork的实施如下:

 private void BackgroundWorker_EditIni(object sender, DoWorkEventArgs e)
    {
        try
        {
            throw new Exception("Test");
        }
        catch (ApplicationException ex)
        {
            FailureMessage = ex.Message;
            e.Cancel = true;
        }
        catch (Exception)
        {
            FailureMessage = DialogMessage.InternalError;
            e.Cancel = true;
            throw;
        }
    }

1 个答案:

答案 0 :(得分:3)

BackgroundWorker DoWork事件处理程序中的handle any unhandled exception。因此,如果您只是让错误被抛出(就像您已经存在的那样),那么您应该能够通过选中RunWorkerCompleted property来获取RunWorkerCompletedEventArgs.Error事件中的错误(如果没有例外被抛出。

我不完全确定为什么要将此错误转到AppDomain.UnhandledException事件处理程序,但如果由于某种原因,您的错误处理和日志记录逻辑都存在于{{1}的事件处理程序中我建议创建一个单独的函数来完成那项工作,你也可以在AppDomain.UnhandledException事件中调用它。

RunWorkerCompleted