MFC 工作者執行緒例項(圖)
工作者執行緒一般用於後臺複雜的計算,它沒有視窗介面,通常只是一些函式組成。下面是例項:
關鍵知識:執行緒同步、執行緒建立。其中涉及到類 CEvent、函式AfxBeginThread, 函式WaitForSingleObject等
步驟:1、建立基於對話方塊的應用程式,並在上新增相應控制元件,如圖1:
圖 1
2、建立後臺函式,作為工作者執行緒的入口地址:
比如可以為專案新增一個新的檔案, 然後定義函式:
UINT BKThreadProc(LPVOID Param) return 0; |
3、在對話方塊類(即CWorkerThreadDlg類)中如下操作:
新增成員變數(public): CEvent m_eStart; CProgressCtrl m_ctrlProgress; |
定義函式:即按鈕“開始運算”的事件函式 void CWorkerThreadDlg::OnBnClickedButton1() } 定義函式:按鈕“使用說明”事件 void CWorkerThreadDlg::OnBnClickedButton3() |
4、以上便是主要步驟,基本上就這些,關鍵是函式AfxBeginThread、WaitForSingleObject以事件同步類CEvent的使用。
執行效果如下:(在後臺執行緒工作的同時可以操作主執行緒介面,如彈出說明等)