У меня есть окна из приложения с кодом 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 #, framework 4, сборка в VS2010 Pro.
Пожалуйста, помогите. Заранее спасибо.