国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MFC如何在線程中實時刷新界面

1.工作者SendMessage讓UI線程去更新界面
2.不要把CWnd指針傳遞到線程中,而是把CWnd所對應(yīng)的HWND窗口句柄傳遞進去,
在線程內(nèi)部,直接使用該句柄,使用windows API來更新界面,而不要在線程中用CWnd的方法來更新界面。
因為MFC不是線程安全的。


請問老師,為什么不能用CWnd方法來更新界面。能詳細解釋下嗎?
為什么我用
//===================第1種在線程中更新界面的方式=================================
HANDLE thread1=CreateThread(NULL,0,xianchen,m_hWnd,0,NULL); //傳入窗口句柄。m_hWnd

//線程中的代碼
CfeizuobiaoDlg * pp=(CfeizuobiaoDlg * )CWnd::FromHandle((HWND)canshu); //通過窗口句柄得到窗口的對象指針
pp->GetDlgItem(IDC_EDIT4)->SetWindowTextW(_T("我是菜鳥?")); //通過窗口對象,更新界面


//===================第2種在線程中更新界面的方式===================
CWnd *hwnd = GetDlgItem(IDC_EDIT4); //得到控件句柄
HANDLE thread1=CreateThread(NULL,0,xianchen,hwnd,0,NULL); //傳入得到的控件句柄。

//線程中的代碼
CWnd *pp=(CWnd*)canshu;  //得到控件句柄。
pp->SetWindowTextW(_T("我是菜鳥。")); //顯示


//===================第3種在線程中更新界面的方式=========================
HANDLE thread1=CreateThread(NULL,0,xianchen,this,0,NULL); //傳入當前窗口的對象。

//線程中的代碼
CfeizuobiaoDlg * pp=(CfeizuobiaoDlg * )canshu;  //直接得到窗口的對象
pp->GetDlgItem(IDC_EDIT4)->SetWindowTextW(_T("我是菜鳥!")); //顯示

都可以成功更新的啊。


這樣做都能實現(xiàn)效果,但是之所以不能這樣做,是因為有可能產(chǎn)生問題,雖然出現(xiàn)問題的概率很低很低,但仍然無法保證百分百不出問題,自己寫一些小程序的話當然沒有關(guān)系,但如果寫一些正式的商業(yè)軟件,特別是需要7X24小時穩(wěn)定運行的軟件,都不會這樣做。其實這是一個多線程編程的問題,并不只是在MFC中需要注意,在所有多線程并發(fā)編程中都應(yīng)該注意,當你直接把CWND指針傳遞到工作者線程中以后,現(xiàn)在就有兩個線程(UI線程和工作者線程)都可以同時調(diào)用這個CWND指針的方法,而MFC不像STL那樣,MFC的對象不是線程安全的,訪問的時候都沒有加鎖,程序運行起來后,可能出現(xiàn)這樣一個狀況,即某個時刻,兩個線程同時調(diào)用了同一個CWND對象的方法,就會帶來一些不可預料的多線程競態(tài)問題,從而出現(xiàn)一些不可預料的錯誤。你要這樣想,我們在多線程編程中,多個線程需要訪問同一個變量的時候,是不是應(yīng)該加鎖訪問,那么UI線程和工作者線程在訪問同一個CWND對象時,也應(yīng)該如此,如果沒有加鎖,豈不是就容易出現(xiàn)問題。
這一點在《MFC windows程序設(shè)計》和MSDN文檔上都說過了,雖然出錯概率很低,但我們也應(yīng)該規(guī)范編程。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
映射窗口句柄對象
走出MFC窗口子類化的迷宮
VC|MFC學習筆記六: 幾個小知識(I)--全域函數(shù),數(shù)據(jù)類型,CWnd和HWnd等
談?wù)劯复翱诤退姓叽翱?- 兔子的技術(shù)博客 - C++博客
MFC編程中的窗口子類化淺析
MFC-窗口封裝
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服