我打電話給AfxBeginThread並使用CWinThread在我的MFC應用程序中創建一個UI線程。我注意到如果我的主線程在CWinThread :: InitInstance()函數返回之前試圖將PostThreadMessage()傳遞給我的新線程,那麼PostThreadMessage()將返回錯誤:無效的線程句柄。等待AfxBeginThread/CWinThread消息泵處於活動狀態?
我的猜測是,直到InitInstance返回後,新線程上的消息泵纔會設置。我見過的關於AfxBeginThread的示例代碼和我讀過的文檔沒有很好地解釋這種行爲,或者顯示了一個模式來等待線程被初始化。
在InitInstance返回並且線程的消息泵準備好接收消息之前阻塞我的主線程的最好方法是什麼?
你說得對,我的回答太複雜了。在回答之前,我應該多研究一下CWinThread類。關鍵點是在發信號通知事件之前在新線程上調用PeekMessage()。 InitInstance,OnIdle和Run都是可行的。 –