(3)在檔案中定義執行緒傳遞引數的資料結構,**如下:
// demodlg.h
typedef struct thread_param
_thread_param;
(4)在cdemodlg類中新增成員變數,**如下:
// demodlg.h
protected:
cwinthread* m_pthread;
thread_param m_threadparam;
(5)在cdemodlg類的建構函式中初始化成員變數,**如下:
// demodlg.cpp
cdemodlg::cdemodlg(cwnd* pparent /*=null*/)
: cdialog(cdemodlg::idd, pparent)
(6)在cdemodlg類的oninitdialog函式中新增如下**:
// demodlg.cpp
bool cdemodlg::oninitdialog()
(7)在檔案中定義執行緒訊息,**如下:
// demodlg.h
#define wm_threadmsg wm_user+1
(8)在檔案中定義執行緒函式,**如下:
// demodlg.h
uint threadproc(lpvoid pparam);
// demodlg.cpp
uint threadproc(lpvoid pparam)
return 0;
}(9)在cdemodlg類中分別為button控制項新增bn_clicked新增訊息處理函式,**如下:
// demodlg.cpp
void cdemodlg::onbeginthread()
m_threadparam.hwnd = m_hwnd;
m_threadparam.bexit = false;
//啟動執行緒,初始為掛起狀態
m_pthread = afxbeginthread(threadproc, &m_threadparam,
thread_priority_above_normal, 0, create_suspended);
//執行緒結束時不自動刪除
m_pthread->m_bautodelete = false;
//恢復執行緒執行
m_pthread->resumethread();
}void cdemodlg::onendthread()
m_threadparam.bexit = true;
//等待執行緒結束
::waitforsingleobject(m_pthread->m_hthread, infinite);
delete m_pthread;
m_pthread = null;
}(10)在cdemodlg類中新增自定義訊息處理函式,**如下:
// demodlg.h
afx_msg lresult onmsgfunc();
// demodlg.cpp
begin_message_map(cdemodlg, cdialog)
on_message(wm_threadmsg, onmsgfunc)
end_message_map()
lresult cdemodlg::onmsgfunc()
如何安全終止MFC執行緒
3 在檔案中定義執行緒傳遞引數的資料結構,如下 demodlg.h typedef struct thread param thread param 4 在cdemodlg類中新增成員變數,如下 demodlg.h protected cwinthread m pthread thread para...
多執行緒MFC
csemaphore semaphorewrite 2,2 資源最多訪問執行緒2個,當前可訪問執行緒數2個 cwinthread pwritea afxbeginthread writea,m ctrla,thread priority normal,0,create suspended pwrit...
MFC多執行緒
如果使用者的應用程式需要有多個任務同時進行相應的處理,則使用多執行緒是較理想的選擇。多執行緒對於網路,列印,字處理,圖形影象,動畫和檔案管理的同乙個系統下執行來說,是非常必要的。在乙個多執行緒程式中,程序必須有乙個主線程,主線程可以在任何需要的時候建立新的執行緒。所有活動的縣城共享程序的資源。解決多...