Как сделать паузу в консоли — окно закрывается сразу
Если окно программы мелькает и сразу закрывается, добавьте в конец ожидание клавиши:
Console.WriteLine("Готово");
Console.WriteLine("Нажмите любую клавишу...");
Console.ReadKey();Console.ReadKey() ждёт нажатия любой клавиши, Console.ReadLine() — нажатия Enter. Пока ожидание не закончилось, окно остаётся открытым, и вывод можно прочитать. Console.ReadKey(true) не печатает нажатую клавишу на экране.
Когда окно закрывается
Консольная программа работает, пока выполняются её команды. Кончились команды — программа завершилась, и окно, которое Windows открыла специально для неё, закрывается. Так бывает, когда .exe запускают двойным щелчком из папки bin\Debug\net10.0. Если же программу запускают из уже открытого терминала (dotnet run в PowerShell), терминал остаётся, и пауза не нужна.
Visual Studio
Запускайте программу через Ctrl+F5 (запуск без отладки): после её завершения окно ждёт клавишу само. При запуске с отладкой (F5) окно тоже остаётся открытым, если в настройках выключен параметр Automatically close the console when debugging stops (Tools → Options → Debugging → General). По умолчанию он выключен, и в конце вывода появляется строка Press any key to close this window . . ..
Задержка на несколько секунд
Если нужна не остановка до нажатия, а пауза на время — Thread.Sleep (время в миллисекундах):
for (int i = 3; i > 0; i--)
{
Console.WriteLine(i);
Thread.Sleep(1000);
}
Console.WriteLine("Старт!");3
2
1
Старт!Между строками проходит по секунде. В программе без Main можно писать и await Task.Delay(1000); — это вариант для асинхронного кода (кода с await, который на время ожидания отпускает поток выполнения и не держит его занятым впустую). Длительность можно задать и через TimeSpan: Thread.Sleep(TimeSpan.FromSeconds(1.5));.
Подводные камни
Console.ReadKey()падает с ошибкойInvalidOperationException(«Cannot read keys when either application does not have a console or when console input has been redirected»), если у программы нет настоящей консоли: ввод перенаправлен из файла или программа запущена в окне вывода отладчика. Тогда используйтеConsole.ReadLine().- В Unity
Thread.Sleepостанавливает всю игру: кадры перестают рисоваться. Там задержки делают средствами самого Unity — например, сопрограммами (coroutines); подробности — в документации Unity. system("pause")из C++ в C# нет — его заменяетConsole.ReadKey().