MFC多執行緒 如何安全終止MFC多執行緒

2021-06-22 00:12:06 字數 1669 閱讀 4711

(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多執行緒

如果使用者的應用程式需要有多個任務同時進行相應的處理,則使用多執行緒是較理想的選擇。多執行緒對於網路,列印,字處理,圖形影象,動畫和檔案管理的同乙個系統下執行來說,是非常必要的。在乙個多執行緒程式中,程序必須有乙個主線程,主線程可以在任何需要的時候建立新的執行緒。所有活動的縣城共享程序的資源。解決多...