3 回答
TA贡献1909条经验 获得超7个赞
除了此处提到的其他内容外,请注意,将 Application.DispatcherUnhandledException(及其类似内容)与
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="1" />
</runtime>
</configuration>
中的,app.config将防止您的辅助线程异常关闭应用程序。
TA贡献1811条经验 获得超6个赞
AppDomain.UnhandledException事件
此事件提供未捕获的异常的通知。它允许应用程序在系统默认处理程序向用户报告异常并终止应用程序之前记录有关异常的信息。
public App()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
}
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception) args.ExceptionObject;
Console.WriteLine("MyHandler caught : " + e.Message);
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating);
}
如果UnhandledException事件是在默认应用程序域中处理的,则无论该线程在哪个应用程序域中启动,任何线程中任何未处理的异常都会在该事件中引发。如果该线程在具有UnhandledException事件处理程序的应用程序域中启动,该事件在该应用程序域中引发。如果该应用程序域不是默认应用程序域,并且默认应用程序域中还有一个事件处理程序,则在两个应用程序域中都会引发该事件。
例如,假设线程在应用程序域“ AD1”中启动,在应用程序域“ AD2”中调用一个方法,然后从那里调用应用程序域“ AD3”中的方法,在该线程中引发异常。可以引发UnhandledException事件的第一个应用程序域是“ AD1”。如果该应用程序域不是默认应用程序域,那么也可以在默认应用程序域中引发该事件。
- 3 回答
- 0 关注
- 1067 浏览
添加回答
举报