Функция _getch () не вернется, пока пользователь не нажмет на клавиатуре клавишу ввода.Если эта функция вызывается из основного потока вашей программы, то это остановит поток пользовательского интерфейса.Он не прокачает цикл сообщений, ваш пользовательский интерфейс зависнет, когда он больше не обрабатывает входные события и не рисует окна.Через пару секунд Windows помещает призрачное окно с надписью «Не отвечает» в строке заголовка.
Хотя вызов _getch () из фонового потока решит проблему, это, вероятно, не будет удобно.Вы можете использовать _kbhit (), чтобы проверить, доступно ли нажатие клавиши.Вызов _getch () после того, как _kbhit () вернет true, не блокируется.Наверное, тоже не удобно.Попытка прокачать цикл сообщений, пока _kbhit () возвращает false, технически была бы решением, если бы не цикл сообщений, содержащий неправильный код.
Обратите внимание, что вы можете ввести Ctrl + S в консолиокно, чтобы приостановить вывод, Ctrl + Q возобновляет его снова.Вы по-прежнему будете блокировать поток пользовательского интерфейса, но, по крайней мере, будете делать это сознательно.