av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

淺析MFC多線程傳參問題

在一個(gè)程序中,這些獨(dú)立運(yùn)行的程序片斷叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理”。多線程處理一個(gè)常見的例子就是用戶界面。利用線程,用戶可按下一個(gè)按鈕,然后程序會(huì)立即作出響應(yīng),而不是讓用戶等待程序完成了當(dāng)前任務(wù)以后才開始響應(yīng)。MFC中使用多線程比較簡(jiǎn)單,大家都推薦用AfxBeginThread來(lái)實(shí)現(xiàn),但使用過程中確遇到傳入this之后不能得到對(duì)象內(nèi)部字段數(shù)據(jù)的問題。

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有貴港免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、問題代碼

1.1 Test.h

 
 
 
  1. #pragma once
  2. class CTest
  3. {
  4. public:
  5. CTest(void);
  6. ~CTest(void);
  7. void ThreadMethod(HWND hWnd);
  8. HWND m_hWnd;
  9. };

 1.2 Test.cpp

 
 
 
  1. #include "StdAfx.h"
  2. #include "Test.h"
  3. CTest::CTest(void)
  4. {
  5. }
  6. CTest::~CTest(void)
  7. {
  8. }
  9. UINT ThreadProc(LPVOID lpParam)
  10. {
  11. CTest* test = (CTest*)lpParam;
  12. HWND hWnd = test->m_hWnd;
  13. return 0;
  14. }
  15. void CTest::ThreadMethod(HWND hWnd)
  16. {
  17. this->m_hWnd = hWnd;
  18. AfxBeginThread(ThreadProc,this);
  19. }

 1.3 MFC主窗體方法調(diào)用

CTest test;

test.ThreadMethod(m_hWnd);

1.4 調(diào)試和說(shuō)明

將斷點(diǎn)打到ThreadProc方法的“HWND hWnd = test->m_hWnd;”,執(zhí)行發(fā)現(xiàn)是空的,而在CTest::ThreadMethod處明明賦值了!實(shí)際中還發(fā)現(xiàn)變量類型是int可以傳遞,CString傳之后就是亂碼或非原始數(shù)據(jù)了。

二、解決辦法

將test聲明為一個(gè)指針,通過指針來(lái)調(diào)用方法,如下:

test = new CTest();

test->ThreadMethod(m_hWnd);

test在頭文件里面聲明即可,再次斷點(diǎn)發(fā)現(xiàn)數(shù)據(jù)正常。

問題比較隱蔽,因?yàn)橹熬褪鞘褂弥羔樂绞秸{(diào)用,后來(lái)改成對(duì)象調(diào)用才出的問題,所以猜出來(lái)的,目前原理還不太明白。


文章題目:淺析MFC多線程傳參問題
當(dāng)前URL:http://uogjgqi.cn/article/dhigcig.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流