如何安全終止MFC執行緒

2022-03-23 03:38:55 字數 1669 閱讀 4643

(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多執行緒 如何安全終止MFC多執行緒

3 在檔案中定義執行緒傳遞引數的資料結構,如下 demodlg.h typedef struct thread param thread param 4 在cdemodlg類中新增成員變數,如下 demodlg.h protected cwinthread m pthread thread para...

執行緒如何終止呢?

執行緒終止的三種方法 1 直接呼叫執行緒的stop方法 通過stop方法可以很快速 方便地終止乙個執行緒 那為什麼jdk不推薦使用stop終止執行緒的方法的原因,因為它很暴力會帶來資料不一致性的問題。如果你確定直接終止對你的業務邏輯沒有影響,也可以使用,但是因為被 deprecated標註了,jdk...

如何暫停和終止執行緒

你能看到這篇文章,說明你已經知道如何建立執行緒了,因此,這裡就不說明執行緒的建立了,詳細說一下執行緒的暫停和終止。我們首先了解一下,什麼是前台執行緒和後台執行緒。net的公用語言執行時 clr 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才...