最近寫乙個程式,需要在自己建立的工作執行緒中更新視窗資料。在使用updatadata(false)來實現時,總是報錯,在網上搜了一下,才知道在工作執行緒中不能使用updatedata來更新主線程中的資料。介面的東西,最好就是用主線程(介面執行緒)去執行相應的操作。要想在子執行緒(工作執行緒)裡執行介面執行緒的操作,最好是向主線程傳送訊息。因為mfc的cwnd用到了tls,所以不是執行緒安全的。
解決辦法:
1.定義乙個訊息 #define wm_update_message (wm_user+200)
2.定義訊息對映
begin_message_map(ccserverdlg, cdialog)
//}afx_msg_map
end_message_map()
3. 定義訊息處理函式
// generated message map functions
//}afx_msg
declare_message_map()
4. 完成函式內容,只需呼叫updatedata()即可
lresult c***dlg::onupdatemessage(wparam wparam, lparam lparam)
5.執行緒中的呼叫
uint c***dlg::clientthread(lpvoid lpparam)
6.程式中呼叫
// cwinthread* pthread;
// static uint clientthread(lpvoid lpparm);
void ccserverdlg::onsstart()
執行緒中使用UpdateData出錯解決方法
最近寫乙個程式,需要在自己建立的工作執行緒中更新視窗資料。在使用updatadata false 來實現時,總是報錯,在網上搜了一下,才知道在工作執行緒中不能使用updatedata來更新主線程中的資料。介面的東西,最好就是用主線程 介面執行緒 去執行相應的操作。要想在子執行緒 工作執行緒 裡執行介...
執行緒中使用UpdateData出錯解決方法
最近寫乙個程式,需要在自己建立的工作執行緒中更新視窗資料。在使用updatadata false 來實現時,總是報錯,在網上搜了一下,才知道在 工作執行緒中不能使用updatedata來更新主線程中的資料 介面的東西,最好就是用主線程 介面執行緒 去執行相應的操作。要想在子執行緒 工作執行緒 裡執行...
工作執行緒中使用UpdateData出錯解決方法
在工作執行緒中不能使用updatedata來更新主線程中的資料。介面的東西,最好就是用主線程 介面執行緒 去執行相應的操作。要想在子執行緒 工作執行緒 裡執行介面執行緒的操作,最好是向主線程傳送訊息。因為mfc的cwnd用到了tls,所以不是執行緒安全的。解決辦法 1.定義乙個訊息 define w...