如何阻止c#控制台应用程序自动关闭?

一旦程序执行完毕,Visual Studio上的控制台应用程序就会自动关闭。我想“暂停”;在应用程序执行结束时,我可以很容易地检查输出。我怎样才能做到呢?

675811 次浏览

Console.ReadLine()等待用户输入Console.ReadKey等待任意键。

更新:

Visual Studio 2017开始,IDE中有一个内置选项:

Tools > Options > Debugging > Automatically close the console when debugging stops

取消选中它将在执行结束时自动暂停应用程序,允许您轻松地检查其输出,而无需向应用程序添加额外的代码。


有两种方法;

Console.ReadLine();

ReadLine()等待

Console.ReadKey();

ReadKey()等待任何键(修饰键除外)。

使用:

Console.ReadKey();

当有人按下任何键时,它就会关闭,或者:

Console.ReadLine();

当用户输入内容并按回车键时。

你可以用Ctrl+F5编译(开始调试)你的工作。

试一试。我总是这样做,控制台显示我的结果打开了。不需要额外的代码。

在Visual Studio中尝试Ctrl + F5来运行您的程序,这将自动添加一个暂停“按任何键继续…”,而不需要任何Console.Readline()或ReadKey()函数。

或者,您可以使用以下代码延迟关闭:

System.Threading.Thread.Sleep(1000);

注意Sleep使用的是毫秒。

Ctrl + F5更好,因为你不需要额外的行。 最后,你可以点击进入并退出运行模式

但是,当你用F5启动程序并设置断点时,你可以调试你的应用程序,这给了你其他的优势。

上面提到的解决方案改变了程序的工作方式。

你当然可以在控制台调用周围放置#if DEBUG#endif,但如果你真的想防止窗口只在Visual Studio下的开发机器上关闭,或者如果只有在显式配置VS时才运行,并且你不想在命令行运行时出现恼人的'Press any key to exit...',那么使用System.Diagnostics.Debugger API的方法是。

如果你只想让它在DEBUG中工作,只需将这段代码包装在[Conditional("DEBUG")] void BreakConditional()方法中。

// Test some configuration option or another
bool launch;
var env = Environment.GetEnvironmentVariable("LAUNCH_DEBUGGER_IF_NOT_ATTACHED");
if (!bool.TryParse(env, out launch))
launch = false;


// Break either if a debugger is already attached, or if configured to launch
if (launch || Debugger.IsAttached) {
if (Debugger.IsAttached || Debugger.Launch())
Debugger.Break();
}

这也适用于调试需要提升特权或需要能够提升自身的程序。

如果你不希望程序关闭,即使用户按下任何键;

 while (true) {
System.Console.ReadKey();
};//This wont stop app