本篇內(nèi)容主要講解“MFC多線程傳參問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MFC多線程傳參問題怎么解決”吧!
創(chuàng)新互聯(lián)建站專注于隴川企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。隴川網(wǎng)站建設(shè)公司,為隴川等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
在一個程序中,這些獨立運行的程序片斷叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理”。多線程處理一個常見的例子就是用戶界面。利用線程,用戶可按下一個按鈕,然后程序會立即作出響應(yīng),而不是讓用戶等待程序完成了當前任務(wù)以后才開始響應(yīng)。MFC中使用多線程比較簡單,大家都推薦用AfxBeginThread來實現(xiàn),但使用過程中確遇到傳入this之后不能得到對象內(nèi)部字段數(shù)據(jù)的問題。
一、問題代碼
1.1 Test.h
#pragma once class CTest { public: CTest(void); ~CTest(void); void ThreadMethod(HWND hWnd); HWND m_hWnd; };
1.2 Test.cpp
#include "StdAfx.h" #include "Test.h" CTest::CTest(void) { } CTest::~CTest(void) { } UINT ThreadProc(LPVOID lpParam) { CTest* test = (CTest*)lpParam; HWND hWnd = test->m_hWnd; return 0; } void CTest::ThreadMethod(HWND hWnd) { this->m_hWnd = hWnd; AfxBeginThread(ThreadProc,this); }
1.3 MFC主窗體方法調(diào)用
CTest test;
test.ThreadMethod(m_hWnd);
1.4 調(diào)試和說明
將斷點打到ThreadProc方法的“HWND hWnd = test->m_hWnd;”,執(zhí)行發(fā)現(xiàn)是空的,而在CTest::ThreadMethod處明明賦值了!實際中還發(fā)現(xiàn)變量類型是int可以傳遞,CString傳之后就是亂碼或非原始數(shù)據(jù)了。
二、解決辦法
將test聲明為一個指針,通過指針來調(diào)用方法,如下:
test = new CTest();
test->ThreadMethod(m_hWnd);
test在頭文件里面聲明即可,再次斷點發(fā)現(xiàn)數(shù)據(jù)正常。
到此,相信大家對“MFC多線程傳參問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
分享標題:MFC多線程傳參問題怎么解決
本文鏈接:http://aaarwkj.com/article36/ipdesg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、云服務(wù)器、軟件開發(fā)、自適應(yīng)網(wǎng)站、定制開發(fā)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)