Не делай этого. Либо: 1) Сделать основной поток, чтобы пропустить все значимые действия, когда он получает сообщение от клавиши Esc, нажатой до тех пор, пока он не будет нажат снова. 2) Используйте CreateEvent и нанесите основной поток WaitForMultipleObjects на него, а затем разбудите его с помощью SetEvent из другого потока или в таймаут.
Первичная нить, если она была запущена насосом для сообщений, является «сердцем и мозгом» приложения Windows, поэтому его остановка эквивалентна клинической смерти. «блокирующие» действия, из которых можно вернуться, например, чтение из файла, сокеты и т. д., являются законными, предполагал, что другой поток не вызвал бы тупик. Сон закончен, потому что поток можно разбудить. Ввод сообщения нить насоса в сон без замены для сообщения насоса - это действие сомнительной добродетели, такое применение может считаться «зависающим». драйверы, которые остановились, будут убиты таким образом, службы будут висели на неопределенное время, графический интерфейс рабочего стола предложит пользователю остановить приложение (или остановит это приложение в корпоративной среде, если админы были параноидальными) и отметит его на панели задач «не отвечает» »и т.д.
Главный поток не может быть остановлен без выхода из программы – TomJ
Вы хотите, чтобы вы * убивали * нить, или просто * suspend * it? –
Кроме того, я думаю, что ваш дизайн немного назад. Обычно вы создаете потоки для выполнения другой работы, в то время как основной поток продолжает обрабатывать основные события (например, проверку на нажатия клавиш). –