Вопрос по c#, console-application – Как остановить автоматическое закрытие консольных приложений C #? [Дубликат]

320

This question already has an answer here:

Why is the console window closing immediately once displayed my output? 19 answers

Мои консольные приложения в Visual Studio закрываются автоматически, поэтому я хотел бы использовать что-то вроде C 'ssystem("PAUSE") «приостановить» приложения в конце его выполнения, как я могу достичь этого?

Ваш Ответ

9   ответов
10

Кроме того, вы можете отложить закрытие, используя следующий код:

System.Threading.Thread.Sleep(1000);

Обратите вниманиеSleep использует миллисекунды.

Thread.Sleep (TimeSpan.FromSeconds (1)), если кто-то хотел мысленно работать с секундами
System.Threading.Thread.Sleep(-1) спать до бесконечности.
6

Если вы не хотите, чтобы программа закрывалась, даже если пользователь нажимает любую клавишу;

 while (true) {
      System.Console.ReadKey();                
 };//This wont stop app
Его ожидание на считывающем ключе, поэтому он не зацикливается непрерывно, это имеет свое применение. Если у вас есть другая обработка для управления приложением, это работоспособное решение. На бесконечность и дальше! :)
это создает бесконечный цикл. Почти никогда не хорошая идея.
Допустим, он обнаруживает нажатие клавиши, и что тогда? Он просто ждет следующего нажатия клавиши. Он не выходит из цикла. Просто скажите "Используйте"System.Console.Readkey()& Quot; вместо того, чтобы путать проблему со сломанным примером. Тем не менее, использование бесконечного цикла должно рассматриваться как использованиеgoto, Приятно иметь возможность, когда вам нужно, но не использовать его только потому, что вы можете! Наконец, вставьте «нажмите любую клавишу, чтобы продолжить». в приложении, которое не должно нуждаться, это хитрый хак. Это не решение проблемы ФП. Все ответы в этом вопросе неверны, кроме @Slobodan Stankovi & # x107;
39

ПытатьсяCtrl + F5 в Visual Studio для запуска вашей программы это добавит паузу с & quot; нажмите любую клавишу, чтобы продолжить ... & quot; автоматически без каких-либо функций Console.Readline () или ReadKey ().

138

Вы можете просто скомпилировать (начать отладку) свою работу сCtrl+F5.

Попытайся. Я всегда делаю это, и консоль показывает мои результаты, открытые на нем. Никакого дополнительного кода не требуется.

@ToolmakerSteve За него проголосовали, потому что это лучшее решение проблемы, с которой сталкивается ОП.
@ToolmakerSteve, это то, что я ищу. Я знаю ReadLine () и Read () и хотел избежать этого.
Ctrl + F5 перестраивает приложение (при необходимости) и запускает егоwithout debugging (т.е. отладчик не подключен) в новом окне консоли, где после выхода из вашего приложенияpause Команда или аналогичный выполняется в том же окне.pause служит для того, чтобы дать вам возможность прочитать вывод до закрытия окна консоли. Когда приложение используется из командной строки, пауза не требуется, так как окно консоли не закрывается после завершения команды.
24

Использование:

Console.ReadKey();

Чтобы закрыть его, когда кто-нибудь нажимает любую клавишу, или:

Console.ReadLine();

Когда пользователь что-то печатает и нажимает ввод.

5

Упомянутые решения меняют работу вашей программы.

Вы можете с курса поставить#if DEBUG а также#endif вокруг вызовов консоли, но если вы действительно хотите предотвратить закрытие окна только на своем компьютере разработчика под Visual Studio, или если VS не работает, только если вы явно настроили его и не хотите раздражать'Press any key to exit...' при запуске из командной строки, путь должен использоватьSystem.Diagnostics.Debugger API & APOS; с.

Если вы только хотите, чтобы это работало в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();
}

Это также работает для отладки программ, которым нужны повышенные привилегии или которые должны быть в состоянии повысить свои права.

13

Ctrl + F5 лучше, потому что вам не нужны дополнительные строки. И вы можете, в конце концов, нажать Enter и выйти из режима бега.

Но когда вы запускаете программу с F5 и ставите точку останова, вы можете отлаживать свое приложение, и это дает вам другие преимущества.

484
Console.ReadLine();

или же

Console.ReadKey();

ReadLine() ждет, ReadKey() ждет любую клавишу (кроме клавиш-модификаторов).

Edit: stole the key symbol from Darin.

Мое консольное приложение требует прав администратора. Таким образом, CTRL + F5 будет запрашивать UAC, а код запускается и завершается немедленно. Ответ @ Адама - лучший для этого.
Это также перенаправляет вывод, хотя. Так что если у вас работает таймер или другой поток, который регистрируется на консоли, вы его вообще не увидите. (Это может иметь место только для Console.Read, а не для других методов).
& Quot; & APOS; Консоль & APOS; не содержит определения для «ReadKey» в консольном приложении asp.net 5 & quot; подходит, иди сюда:stackoverflow.com/questions/30588478/…
Это на самом деле плохой ответ, потому что он дает ОП то, что они просили, а не то, что им нужно. Говорить оператору о том, что он ломает свое программное обеспечение, чтобы работать так, как он запускает, - это просто плохой совет. Среди прочего, это делает невозможным использование программы в конвейере.
Ответ Сильвы лучше, бегать с Control-F5
35

Console.ReadLine() ждать пользователяEnter или жеConsole.ReadKey ждать любую клавишу.

Похожие вопросы