AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Forms.Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
是我解开类似问题的代码,但它无法解决我的问题。 我正在尝试做的是抓住崩溃并正确处理我的应用程序,这样我就不会留下内存转储/跟踪/系统托盘图标
答案 0 :(得分:0)
如果使用调试器或任务管理器终止进程,则无法处理这种情况 - 无论是.NET应用程序还是本机应用程序。
可能会在CLR中处理操作系统异常,但不建议这样做。有关详细信息,请参阅Is it possible to catch an access violation exception in .NET?。
在几乎所有情况下,您的进程都不应该以这些方式终止,即使这样,也不需要正确处理,因为操作系统将正确关闭几乎所有句柄:文件,连接等。终止的应用程序将托盘图标放在后面是资源管理器中的一个20岁的bug,你无法做任何事情。让我们希望微软有一天会修复它。