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

How to stop C# console applications from closing automatically?

本问题已经有最佳答案,请猛点这里访问。

我在Visual Studio上的控制台应用程序正在自动关闭,所以我想使用C的system("PAUSE")之类的工具在应用程序执行结束时"暂停"应用程序,我如何才能做到这一点?


1
Console.ReadLine();

1
Console.ReadKey();

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

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


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

试试看。我总是这样做,控制台会在上面显示我的结果。不需要附加代码。


尝试在Visual Studio中使用ctrl+f5来运行程序,这将自动添加一个带有"按任意键继续…"的暂停,而不使用任何console.readline()或readkey()函数。


Console.ReadLine()等待用户enterConsole.ReadKey等待任何键。


用途:

1
Console.ReadKey();

当有人按下任何键时关闭,或:

1
Console.ReadLine();

当用户键入内容并按Enter键时。


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

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


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

1
System.Threading.Thread.Sleep(1000);

注:Sleep使用毫秒。


这些解决方案改变了程序的工作方式。

当然,您可以将#if DEBUG#endif放在控制台调用周围,但如果您真的想阻止窗口仅在Visual Studio下的dev计算机上关闭,或者如果仅在显式配置时不运行vs,并且在从命令行运行时不希望恼人的'Press any key to exit...',则可以使用System.Diagnostics.DebuggerAPI的。

如果您只希望它在DEBUG中工作,只需将此代码包装在[Conditional("DEBUG")] void BreakConditional()方法中。

1
2
3
4
5
6
7
8
9
10
11
// 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();
}

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


如果您不想关闭程序,即使用户按下任何键;

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