Обычно поток должен находиться в спящем режиме до тех пор, пока не получит сигнал, но не с использованием Sleep
или SleepEx
.
Вы создаете событие и ждете, пока оно будет сигнализировано, либо с помощью TEvent , либо напрямую в Win32 API с помощью WaitForSingleObject .
Sleep
вызывает так много проблем, включая то, что я называю болезнью "Спящей красавицы". Вся остальная часть вашего приложения была прервана и закрыта несколько сотен микросекунд назад, и ваш поток просуществовал «миллион лет» в относительном компьютерном измерении времени, и когда он пробуждает остальную часть вашего приложения давно прекратилось. Следующее, что может сделать ваш фоновый поток, - это получить доступ к некоторому объекту, на который он ссылается, который был заморожен, а затем (если вам повезет) он потерпит крах. Не используйте Sleep
в темах. Дождитесь событий или используйте предварительно созданный рабочий поток (например, OmniThreadLibrary).