我有一個從應用窗戶,Program.cs中這樣的代碼:catch錯誤
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。
請幫助。提前致謝。
這個問題是http://stackoverflow.com/questions/4284986/c-sharp-catching-unhandled-exception-on-seperate-threads的副本 – 2012-02-22 05:48:06