什么可能导致.NET WinForms应用程序突然关闭而没有对话框?

StackOverflow https://stackoverflow.com/questions/201614

  •  03-07-2019
  •  | 
  •  

据报道,我们的WinForms应用程序偶尔会自行关闭。它既没有显示我们自己的崩溃错误提交对话框,也没有显示Windows的错误提交对话框,它只是关闭并且已经消失,通常当这个人是afk并且没有对应用程序做任何事情时。这似乎是一种半罕见的情况,可能每月2-3次,而且发生在一个以上的人身上。我不知道从哪里开始获取一个repro案例或从哪里开始跟踪它。

C# .NET 2.0 报告的案例在Win XP上

有人有什么想法吗?

有帮助吗?

解决方案

由于无限递归导致的堆栈溢出是应用程序退出而没有警告的重要原因。除非你已经做了一些故意导致静默退出的事情,否则在应用程序退出之前,未处理的异常(除了堆栈溢出)通常会显示某种UI。堆栈溢出是此规则最常见的例外(哎呀,抱歉)。

当然,从非托管或不安全的代码中,几乎可以肯定的是以正确的方式扰乱运行时导致静默退出。

关于检测和查看Windows事件日志的建议也很好。

其他提示

例外情况会导致应用“消失”。检查事件日志以查看是否有任何内容。

检查任务管理器,以在窗口消失时查看进程是否仍然存在。我有浏览器崩溃,无法重绘窗口,直到它是Alt-Tabbed或Switched-To(来自任务管理器)。

不要让它超过用户,以方便忘记他们正在关闭应用程序。您可能希望在应用程序中添加一些日志记录逻辑以记录用户启动的闭包。下一次它“消失”你可以检查任何日志条目。

您可以在FormClosing事件中添加一些逻辑来询问用户这是否真的想要做什么,然后您可以取消关闭事件,如果一切正常,您的应用程序将继续运行。如果你一直注意到这个问题并且它从不执行你的逻辑,那么你将不得不在调试器中弄脏你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top