【问题标题】:Preventing the "[YourProgramName] has stopped working" dialog on unhandled exceptions防止出现未处理异常的“[YourProgramName] 已停止工作”对话框
【发布时间】:2010-04-29 14:49:14
【问题描述】:

我有一个 WinForm 应用程序,它依赖于外部库,有时会导致运行线程上下文之外的异常。就目前而言,这是完全正常的行为(当然,除了异常),我们连接 AppDomain.CurrentDomain.UnhandledException 以简单地重新启动程序。

唯一的问题是,[Your Program] 已停止工作,如下所示: alt text http://telcontar.net/store/archive/CrashGallery/images/crash/vista/2007-05-30%20Microsoft%20Register%20Server.png

有没有办法完全阻止此对话框出现,无论是在 AppDomain 未处理的异常处理程序中还是在配置设置中,因为没有最终用户会阅读它并且它只会占用资源直到它被点击.

【问题讨论】:

  • AFAIK,该对话框仅在您的应用程序以异常方式终止(例如未处理的异常)时显示。您确定您的未处理异常处理程序在所有情况下都能正常工作吗?
  • 是和不是。你是对的,对话框是因为一个未处理的异常,是的,AN 异常处理程序没有处理它。但是,异常的代码位于 WCF 托管服务中,因此,托管 WCF 服务的 WinForm 应用程序最终无法控制异常,除非在 AppDomain.CurrentDomain.UnhandledException 中注意到它。理想的解决方案是找到并修复所有未处理的异常,但现在我很高兴只记录发生的异常,重新启动 APP(以及 WCF 服务),而不是让应用程序终止并挂起。

标签: winforms exception dialog


【解决方案1】:

通过阻止 UnhandledException 事件处理程序退出来避免 WER 对话框。调用 Environment.Exit() 终止您的应用程序。

【讨论】:

  • 谢谢,当我需要终止我的应用程序时它可以工作。但是如果需要重新启动我该怎么办?我正在使用 Application.Restart() 但它显示此对话框([您的程序]已停止工作)...
猜你喜欢
  • 1970-01-01
  • 2010-10-11
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多