С объектами событий.
Основной поток вызывает CreateEvent () при инициализации для создания объекта события с автосбросом.
Затем основной поток входит в цикл обработки событий, в котором он неоднократно вызывает MsgWaitForMultipleObjects (). ( здесь - пример цикла сообщений.)
И вам, как правило, нужно проверять наличие оконных сообщений, даже если основной поток не имеет графического интерфейса.
В клиентском потоке (который создает объект приемника) вызовите SetEvent () внутри метода приемника после любого необходимого обновления состояния. Это разбудит основной поток.
И прочитайте это и это , если вы этого еще не сделали.