如何阻止C#控制台应用程序自动closures?
我在Visual Studio上的控制台应用程序正在自动closures,因此我希望使用类似于C的system("PAUSE")
来在应用程序执行结束时“暂停”应用程序,我该如何实现这一点?
Console.ReadLine();
要么
Console.ReadKey();
ReadLine()
等待ReadKey()
, ReadKey()
等待任何键(修饰键除外)。
编辑:偷走达林的关键符号。
你可以用Ctrl + F5编译(开始debugging)你的工作。
尝试一下。 我总是这样做,控制台显示我的结果打开它。 不需要额外的代码。
Console.ReadLine()
等待用户input或Console.ReadKey
等待任何密钥。
尝试Ctrl + F5在Visual Studio中运行您的程序,这将添加一个暂停与“按任意键继续…”自动没有任何Console.Readline()或ReadKey()函数。
使用:
Console.ReadKey();
当有人按任何键时closures,或者:
Console.ReadLine();
当用户键入东西,并按下input。
Ctrl + F5更好,因为你不需要额外的行。 最后,你可以进入和退出运行模式。
但是,当你用F5启动一个程序,并设置一个断点时,你可以debugging你的应用程序,并给你其他的好处。
或者,您可以使用以下代码延迟closures:
System.Threading.Thread.Sleep(1000);
注意Sleep
使用毫秒。
提到的这些解决scheme会改变程序的工作方式
你可以把#if DEBUG
和#endif
放在控制台调用中,但是如果你真的想阻止窗口在Visual Studio下的开发机器上closures,或者只有当你明确地configuration它时,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(); }
这也适用于debugging需要提升权限的程序,或者需要能够提升自己的程序。
如果你不想让程序closures,即使用户按任意键,
while (true) { System.Console.ReadKey(); };//This wont stop app