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

Zig*_*gnd 354 c# console-application

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

Ada*_*dam 545

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

要么

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

ReadLine()等待,ReadKey()等待任何键(修改键除外).

编辑:偷走了达林的钥匙符号.

  • 这实际上是一个糟糕的答案,因为它为OP提供了他们所要求的而不是他们需要的东西.告诉OP打破他的软件以解决他推出它的方式只是一个糟糕的建议.除此之外,它使得无法在管道中使用该程序. (14认同)
  • "'控制台'在asp.net 5控制台应用程序中不包含'ReadKey'的定义",请访问:http://stackoverflow.com/questions/30588478/console-does-not-contain-a-definition - 用于-readkey式-ASP净5控制台应用程序 (2认同)
  • 使用Control-F5运行Silva的答案更好 (2认同)

小智 154

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

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

  • Ctrl + F5重建应用程序(如果需要)并在没有调试*(即未附加调试器)的情况下运行它*在新的控制台窗口中,在应用程序退出后,在其中运行`pause`命令或类似命令窗口.`pause`用于在控制台窗口关闭之前让您有机会读取输出.从命令行使用应用程序时,不需要暂停,因为在命令完成后控制台窗口不会关闭. (19认同)
  • 但这对于在 Visual Studio 之外运行控制台程序的人来说没有用。即:双击.exe (3认同)
  • @ToolmakerSteve它受到了赞成,因为它是解决OP所遇问题的最佳解决方案. (2认同)

Soh*_*N3N 43

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


Dar*_*rov 35

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


mat*_*ewr 25

使用:

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

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

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

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


Slo*_*vić 13

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

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


got*_*tqn 11

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

System.Threading.Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)

注意Sleep是使用毫秒.

  • Thread.Sleep(TimeSpan.FromSeconds(1))如果有人想要精神上使用秒 (11认同)
  • `System.Threading.Thread.Sleep(-1)`无限期地睡觉. (5认同)

Eri*_*ric 9

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

你可以关闭过程中把#if DEBUG#endif周围的控制台呼叫,但如果你真的想阻止窗口在Visual Studio或如果VS不仅运行,如果你明确地将其配置您的开发机器上只关闭了,你不希望'Press any key to exit...'从命令行运行时很烦人,要走的路是使用System.Diagnostics.DebuggerAPI.

如果您只想使用它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();
}
Run Code Online (Sandbox Code Playgroud)

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


Pod*_*.io 5

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

 while (true) {
      System.Console.ReadKey();                
 };//This wont stop app
Run Code Online (Sandbox Code Playgroud)

  • 如果您将应用程序作为服务运行,这将导致 100% 的 CPU 使用率。 (4认同)
  • 这会产生无限循环.几乎从来都不是一个好主意. (3认同)