【发布时间】:2011-12-13 23:10:50
【问题描述】:
我有一个 c# Windows 窗体应用程序,可以在大多数机器上完美运行。但是有些机器在关闭子窗体(不是 MDI 应用程序)时,整个应用程序会挂起几秒钟,直到窗口关闭。这仅在单击右上角的“X”按钮时发生。如果我在表单上有一个只调用this.Close(); 的按钮,则窗口会很好地关闭。我有大约 20 台机器可以正常工作,但到目前为止我已经看到 2 台出现此问题(一台是 Windows 7,另一台是 XP)。如果我在这些机器上运行 Visual Studio 中的代码,窗口确实可以正常关闭。它仅在从 EXE 运行时发生。关闭应用程序的主窗体时没有挂起。只是孩子的形式。我只是在使用
Form1 f = new Form1();
f.Show();
打开窗口。我已经在同一个应用程序中没有代码的空白测试表单上尝试过这个,并且发生了同样的事情。对于同一台计算机上的其他 Windows 窗体应用程序,不会出现此问题。此应用程序有一些特定的原因导致此问题,但我无法缩小范围。我知道这是一个很难在没有看到整个代码库的情况下回答的问题,但是过去有没有其他人遇到过类似的问题?谢谢。
编辑:一些附加说明
当单击最小化、最大化和恢复按钮中的任何一个时,它们都会导致相同的挂起。
有趣的是,如果您单击左上角的窗口图标并选择关闭、最小化或最大化,这些都可以正常工作,没有延迟或挂起。
【问题讨论】:
-
调用
Show只会将Visible设置为true。单击X按钮和调用Close都会引发Closing事件——这里没有区别。您是否尝试过将一个简单的应用程序与一个主窗体、几个子窗体和主窗体上的关闭按钮组合在一起?