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

时间:2012-07-16 21:26:33

标签: c# console-application

Visual Studio上的我的控制台应用程序正在自动关闭,所以我想使用像C system("PAUSE")这样的东西在执行结束时“暂停”应用程序,我该如何实现?

9 个答案:

答案 0 :(得分:499)

Console.ReadLine();

Console.ReadKey();

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

编辑:从Darin那里偷走了钥匙符号。

答案 1 :(得分:143)

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

试试吧。我总是这样做,控制台告诉我我的结果是打开的。无需其他代码。

答案 2 :(得分:42)

在Visual Studio中尝试 Ctrl + F5 来运行您的程序,这将添加一个暂停"按任意键继续..."自动没有任何Console.Readline()或ReadKey()函数。

答案 3 :(得分:35)

Console.ReadLine()等待用户 Enter Console.ReadKey等待任何密钥。

答案 4 :(得分:24)

使用:

Console.ReadKey();

当有人按任意键时关闭它,或者:

Console.ReadLine();

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

答案 5 :(得分:13)

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

但是,当您使用F5启动程序并设置断点时,您可以调试应用程序并为您提供其他优势。

答案 6 :(得分:10)

或者,您可以使用以下代码延迟结束:

System.Threading.Thread.Sleep(1000);

注意Sleep使用的是毫秒。

答案 7 :(得分:8)

提到的解决方案会改变您的计划的运作方式。

您可以在控制台调用周围放置#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();
}

这也适用于调试需要提升权限的程序,或者需要能够提升自己的程序。

答案 8 :(得分:6)

如果您不希望程序关闭,即使用户按任意键也是如此;

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