捕获异常并在程序崩溃时正确处理程序

时间:2013-04-14 13:43:04

标签: c# winforms crash applicationdomain

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Forms.Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

是我解开类似问题的代码,但它无法解决我的问题。 我正在尝试做的是抓住崩溃并正确处理我的应用程序,这样我就不会留下内存转储/跟踪/系统托盘图标

1 个答案:

答案 0 :(得分:0)

如果使用调试器或任务管理器终止进程,则无法处理这种情况 - 无论是.NET应用程序还是本机应用程序。

可能会在CLR中处理操作系统异常,但不建议这样做。有关详细信息,请参阅Is it possible to catch an access violation exception in .NET?

在几乎所有情况下,您的进程都不应该以这些方式终止,即使这样,也不需要正确处理,因为操作系统将正确关闭几乎所有句柄:文件,连接等。终止的应用程序将托盘图标放在后面是资源管理器中的一个20岁的bug,你无法做任何事情。让我们希望微软有一天会修复它。