2010-09-13 44 views
0

我正在MFC項目上工作,我需要一個單獨的循環,將持續運行或每隔幾秒運行一次,並且每次它可能或可能不需要運行一個對話框以獲得用戶的一些輸入。我正在考慮使用AfxBeginThread,但是從我讀過的內容來看,它並沒有真正適用於連續循環。無限線程,可能會或可能不會運行CDialog每個循環

回答

1

不要這樣做。你不能在工作線程中關閉對話框。它們只能在主線程中啓動,因爲它們需要消息泵才能運行。

如果你想要的是每隔幾秒鐘發射一次的信號,那麼你想要的是一個timer。爲你想要的定時器週期設置定時器,當你的主線程處理了所需的WM_TIMER消息時,你可以彈出一個對話框並執行你的操作。

如果您希望您的工作線程執行一些工作(可能包括也可能不包括詢問用戶信息),那麼您需要讓線程使用PostMessage()向主線程發送消息,在主線程中通過詢問用戶數據來處理該消息,然後使用輸入數據將信號發送回工作線程。完成最後一步的一種方法是通過主線程調用QueueUserAPC()與工作線程的句柄和指向一個函數的指針,該函數用新輸入的數據做一些事情。

+0

感謝計時器正是我所期待的! – Tbone 2010-09-13 20:36:58

相關問題