【发布时间】:2010-10-07 22:51:29
【问题描述】:
我有一个应用程序在取消对话框时出现奇怪的错误。如果该框被取消,应用程序将无法继续,因此它会退出,但由于某种原因它无法正常工作,因此它会继续运行并崩溃。
我调试了这个问题,不知何故,应用程序在 Application.Exit 调用之后运行。我在调试模式下运行,这是相关的,因为少量代码取决于定义的 RELEASE 变量。这是我的应用退出代码。我跟踪了代码,它进入了 ExitApp 方法,并继续运行,将控制权返回给调用者并最终崩溃。
这是一个通过远程桌面连接提供报告的应用程序,因此退出代码有点奇怪。它试图终止远程会话,但仅在发布时运行,因为我不想在每次测试运行时关闭我的开发机器。
private void ExitApp()
{
HardTerminalExit();
Application.Exit();
}
// When in Debug mode running on a development computer, this will not run to avoid shutting down the dev computer
// When in release mode the Remote Connection or other computer this is run on will be shut down.
[Conditional("RELEASE")]
private void HardTerminalExit()
{
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false);
}
我在 Application.Exit 行之后运行了一个调试器,但没有任何反应,然后在我越过该行后控制权返回给调用者。
发生了什么事?这是一个 Windows 窗体应用程序。
【问题讨论】:
-
对我来说-我执行了不同的 form.Show() 调用-关闭了该窗口并且 application.exit() 失败,我将其更改为 form.ShowDialog() 调用并且一切都更好