3

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

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

有人有想法么?

4

3 回答 3

4

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

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

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

于 2008-10-14T15:43:20.560 回答
3

异常会导致应用程序“消失”。检查事件日志以查看是否有任何内容。

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

不要让用户忘记他们正在关闭应用程序。您可能希望在应用程序中放置一些日志记录逻辑来记录用户发起的关闭。下次它“消失”时,您可以检查任何日志条目。

于 2008-10-14T15:26:18.563 回答
0

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

于 2008-10-14T15:32:54.947 回答