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

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

9 ответов

Решение
Console.ReadLine();

или же

Console.ReadKey();

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

Редактировать: украл символ ключа от Дарина.

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

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

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

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

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

Console.ReadKey();

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

Console.ReadLine();

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

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

System.Threading.Thread.Sleep(1000);

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

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

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

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

Вы можете с курса поставить #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();
}

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

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

 while (true) {
      System.Console.ReadKey();                
 };//This wont stop app
Другие вопросы по тегам