Как остановить автоматическое закрытие консольных приложений C#? [дубликат]


этот вопрос уже есть ответ здесь:

  • Почему окно консоли закрывается сразу же после отображения моего вывода? 18 ответов

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

9 295

9 ответов:

Console.ReadLine();

или

Console.ReadKey();

ReadLine() ждет ,ReadKey() ждет любой клавиши (за исключением клавиш).

Edit: украл ключевой символ у Дарина.

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

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

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

Console.ReadLine() ждать, пока пользователь введите или Console.ReadKey ждать любой ключ.

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

Console.ReadKey();

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

Console.ReadLine();

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

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

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

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

System.Threading.Thread.Sleep(1000);

Примечание Sleep использует миллисекунд.

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

вы можете конечно поставить #if DEBUG и #endif вокруг вызовов консоли, но если вы действительно хотите, чтобы окно закрывалось только на вашем компьютере dev под 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();
}

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

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

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