gpt4 book ai didi

c# - 从另一个线程捕获 Application.ThreadException 中的错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:51 25 4
gpt4 key购买 nike

我有一个来自应用程序的窗口,带有这样的 program.cs 代码:

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += (sndr, evnt) =>
{
MessageBox.Show("An error occur. Please contact your administrator.\nError description: " +
evnt.Exception.Message + "\nStack trace:\n" + evnt.Exception.StackTrace,
evnt.Exception.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
};
Application.Run(new frmLogin());
}
}

但是当在 BackgroundWorker.DoWork 事件中抛出异常时,Application.ThreadException 没有捕获它。

Application.ThreadException 如何从由 BackgroundWorker 创建的不同线程捕获异常>?

我知道在 Application.ThreadException 中捕获错误不是一个好的做法,但我们只将它用作我们最后一级的错误捕获。

我的代码在 C# 中,框架 4,在 VS2010 Pro 中构建。

请帮忙。提前致谢。

最佳答案

参见 this question : BackgroundWorker 异常不会像那样传播,因此您无法在 ThreadException 中捕获它们。

抛出异常的 BackgroundWorker 像往常一样调用 RunWorkerCompleted,但在事件参数上设置 Error 属性。

关于c# - 从另一个线程捕获 Application.ThreadException 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389655/

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