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

Posted

技术标签:

【中文标题】如何阻止 C# 控制台应用程序自动关闭? [复制]【英文标题】:How to stop C# console applications from closing automatically? [duplicate] 【发布时间】:2012-07-15 19:16:35 【问题描述】:

我在 Visual Studio 上的控制台应用程序正在自动关闭,因此,我想使用类似 C 语言的 system("PAUSE") 在应用程序执行结束时“暂停”应用程序。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

如果您不希望程序在用户按任意键时关闭;

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

【讨论】:

这会创建一个无限循环。几乎从来都不是一个好主意。 如果您将应用程序作为服务运行,这将创建 100% 的 CPU 使用率。【参考方案2】:

提到的这些解决方案会改变您的程序的工作方式。

当然,您可以将#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();

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

System.Threading.Thread.Sleep(1000);

注意Sleep 使用的是毫秒。

【讨论】:

Thread.Sleep(TimeSpan.FromSeconds(1)) 如果有人想在精神上使用秒数 System.Threading.Thread.Sleep(-1) 无限期地睡觉。【参考方案5】:

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

【讨论】:

【参考方案6】:
Console.ReadLine();

Console.ReadKey();

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

编辑:从达林那里偷了钥匙符号。

【讨论】:

“'Console' 在 asp.net 5 控制台应用程序中不包含 'ReadKey' 的定义”出现,转到此处:***.com/questions/30588478/… 这实际上是一个糟糕的答案,因为它为 OP 提供了他们要求的东西,而不是他们需要的东西。告诉 OP 破坏他的软件以解决他启动它的方式只是一个糟糕的建议。除其他外,它使得无法在管道中使用该程序。 席尔瓦的答案更好,用 Control-F5 运行 这也会重定向输出。因此,如果您有一个正在运行的计时器或另一个记录到控制台的线程,您根本不会看到它。 (这可能只适用于 Console.Read 而不是其他方法)。 我的控制台应用程序需要管理员权限。因此,CTRL+F5 将要求 UAC 并且代码立即运行并退出。 @Adam 的回答是最好的。【参考方案7】:

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

试试看。我总是这样做,控制台会向我显示我的结果。不需要额外的代码。

【讨论】:

这对在 Visual Studio 之外运行控制台程序的人来说没有用。即:双击.exe【参考方案8】:

用途:

Console.ReadKey();

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

Console.ReadLine();

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

【讨论】:

【参考方案9】:

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

【讨论】:

以上是关于如何阻止 C# 控制台应用程序自动关闭? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止文本区域自动换行? [复制]

如何将 .exe 从 C++ 项目复制到 C# 项目的输出目录?

线程运行一个我无法控制的无限操作。如何阻止它? [复制]

Visual Studio 2013 如何在停止调试Web程序后阻止IIS Express关闭

从应用程序关闭自动锁定

如何阻止 C++ 控制台应用程序立即退出?