gpt4 book ai didi

c# - BackgroundWorker _ 异常未被 AppDomain.UnhandledException 捕获

转载 作者:行者123 更新时间:2023-11-30 22:11:10 28 4
gpt4 key购买 nike

我正在使用以下代码处理来自 BackgroundWorker 的异常。问题是异常没有传播到 AppDomain.CurrentDomain.UnhandledException。

App.xaml.cs:

private void Application_Startup(对象发送者,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;
}
}

最佳答案

BackgroundWorkerhandle any unhandled exceptionDoWork 事件处理程序中。因此,如果您只是让错误被抛出(就像您已经抛出的那样),那么您应该能够通过检查 RunWorkerCompletedEventArgs.ErrorRunWorkerCompleted 事件中获取它 property (如果没有抛出异常,它将为 null。

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

if(e.Error != null)
{
ErrorHandler.HandleCriticalError(e.Error);
}

关于c# - BackgroundWorker _ 异常未被 AppDomain.UnhandledException 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408807/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com