【发布时间】:2012-02-22 14:00:43
【问题描述】:
我有一个来自应用程序的窗口,其 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 中构建。
请帮忙。提前致谢。
【问题讨论】:
标签: c# multithreading .net-4.0 backgroundworker