我很确定你不能影响或改变这种行为。
正如您所提到的,它与您的应用程序本身无关,因为当您双击 EXE 时它不会这样做。只有在没有附加调试器的情况下从 Visual Studio 中运行应用程序时,才能看到此效果。
据推测,当您调用Ctrl+时F5,Visual Studio 正在以特定方式运行您的应用程序,从而导致控制台窗口保持打开状态。我可以想到两种可能的方式:
%COMSPEC% /k "C:\Path\To\YourApplication.exe"
或者
%COMSPEC% /c ""C:\Path\To\YourApplication.exe" & pause"
使用其中任何一种,您看到的暂停行为都会直接融入用于启动您的应用程序的命令中,因此在您的应用程序之外。因此,除非您有权访问 Visual Studio 源代码,否则您不会更改它。从您的应用调用exit
函数不会有任何效果,因为在该消息出现时您的应用已经退出。
当然,除了好奇之外,我看不出它为什么真的很重要。当您启动带有调试器的应用程序时不会发生这种情况,这是您从 IDE 启动应用程序时 99% 的时间所做的事情。而且由于您不随应用一起发布 Visual Studio,因此您的用户将在 VS 之外启动应用。
为了响应对您的问题所做的更新,最好的解决方案是更改您的应用程序,使其不是控制台应用程序。此行为不会影响标准 Windows 应用程序;当它们关闭时,它们会永久关闭。
如果您不需要控制台窗口上的任何输出,那么这很简单:只需更改项目属性中的“应用程序类型”即可。Windows 窗体应用程序可以正常工作。如果您不显示窗口(也称为表单),则不会自动创建一个窗口。这是常规 Windows 应用程序和控制台应用程序之间的区别,无论您是否需要,它们总是创建一个控制台窗口。
如果您确实需要在控制台窗口上显示输出,您有几个选择:
- 创建并使用带有 ListBox 或 ListView 控件的简单表单。通常输出到控制台的每一行,都作为新项目添加到列表控件中。如果您不使用控制台的任何“高级”功能,这将很有效。
- P/Invoke 并调用该
AllocConsole
函数以创建您的 Windows 应用程序可以使用的控制台。您不需要为此填写表格。