c# - 程序崩溃时捕获异常并妥善处理

标签 c# winforms crash applicationdomain

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/

相关文章:

c# - 单击以移动动画不起作用

c# - 从 WCF 服务调用基于任务的异步单向回调方法

c# - 没有指定 authenticationScheme,也没有找到基于自定义策略的授权的 DefaultForbidScheme

ios - 为什么这不会崩溃?

c++ - 为什么VC++ 2010编译器在编译简单代码时会崩溃?

c# - 读取二进制文件并使用新行作为分隔符来创建二进制 block

c# 多个计时器编辑同一个列表

c# - 使用方法 mysql_native_password 身份验证失败

winforms - 将 DataGridViewComboBoxCell 的数据源动态设置为基于其他单元格选择的过滤数据 View

python - 当我运行python Portable时,有时会崩溃,有时却不会