最近發生在按件事件觸發後,執行到某個Thread,然後此Thread會做更新UI的動作,結果悲劇就產生了,DeadLock....
解決方式可以用自訂Message的方式來解決,如果Thread要更新UI,可以用PostMessage來取代。自訂Message的方式如下:
1. 先在Header檔訂義自訂的Message
#define WM_MY_MSG (WM_USER+ N)
[註] N為一個整數,來區別不同自訂的訊息
2. 加入處理此訊息的Function宣告
afx_msg LRESULT OnMyMSG(WPARAM wPararm, LPARAM lParam);
3. 在CPP檔加入消息映射
BEGIN_MESSAGE_MAP(CFactoryAPDlg, CDialog)
ON_MESSAGE(WM_MY_MSG, OnMyMSG)
END_MESSAGE_MAP()
4. 實作OnMyMSG()
實作完後,就可以在Thread處理時,用PostMessage(WM_MY_MSG)來解決DeadLock的問題。
網誌管理員已經移除這則留言。
回覆刪除