AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Forms.Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
是我从类似问题中截取的代码,但未能解决我的问题。 我想做的是捕捉崩溃并正确处理我的应用程序,这样我就不会留下内存转储/痕迹/系统托盘图标
最佳答案
如果您使用调试器或任务管理器终止进程,则无法处理这种情况——无论是 .NET 应用程序还是 native 应用程序。
在 CLR 中处理操作系统异常是可能的,但不建议这样做。参见 Is it possible to catch an access violation exception in .NET?了解更多详情。
在几乎所有情况下,您的进程都不应该以这些方式终止,即使它终止了,也没有必要进行适当的处理,因为操作系统将正确关闭几乎所有句柄:文件、连接等。终止的应用程序留下托盘图标是Explorer 中存在 20 年之久的错误,您对此无能为力。我们只希望微软有一天会修复它。
关于c# - 程序崩溃时捕获异常并妥善处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999732/