Не делай этого.Вы не можете просто разрывать диалоги в рабочих потоках.Они могут быть запущены только в главном потоке, потому что для их работы требуется насос сообщений.
Если все, что вам нужно, это какой-то сигнал, который срабатывает каждые несколько секунд, тогда вам нужно только таймер .Установите таймер на требуемый период таймера, и когда ваш основной поток обработает желаемое сообщение WM_TIMER, вы можете открыть диалоговое окно и выполнить свою задачу.
Если вы хотите, чтобы ваш рабочий поток выполнял какую-то работу, котораяможет включать или не запрашивать у пользователя информацию, тогда вы захотите, чтобы ваш поток использовал PostMessage () , чтобы отправить сообщение в основной поток, обработать это сообщение в основном потоке с помощьюзапрашивая данные у пользователя, а затем отправляя сигнал обратно в рабочий поток с входными данными.Один из способов выполнить последний бит - вызвать QueueUserAPC () из основного потока с дескриптором рабочего потока и указателем на функцию, которая что-то делает с вновь введенными данными.