microsoft基礎類(mfc)庫為多執行緒應用程式提供支援。 執行緒是程序內的執行路徑。 當您啟動記事本時,作業系統會建立乙個程序並開始執行該程序的主線程。 當該執行緒終止時,該過程也是如此。
如果需要,可以在應用程式中建立其他執行緒。 mfc應用程式中的所有執行緒都由cwinthread物件表示。 在大多數情況下,您甚至不必顯式建立這些物件; 而是呼叫框架幫助函式afxbeginthread,它為您建立cwinthread物件。
如果需要,可以在應用程式中建立其他執行緒。 mfc應用程式中的所有執行緒都由cwinthread物件表示。 在大多數情況下,您甚至不必顯式建立這些物件; 而是呼叫框架幫助函式afxbeginthread,它為您建立cwinthread物件。
讓我們通過建立乙個新的基於mfc對話方塊的應用程式來檢視乙個簡單的示例。
第1步 - 將static控制項的標題和id更改為分別單擊「開始執行緒」按鈕和「idc_static_text」。
第2步 - 拖動button按鈕並為這些按鈕新增單擊事件處理程式。
第3步 - 為靜態文字控制項新增控制變數。
在cmfcmultithreadingdlg.h檔案中新增:
private:
cstatic m_text;
第4步- 現在在cmfcmultithreadingdlg.cpp檔案的開頭新增以下三個全域性變數。
int currvalue;
int maxvalue;
bool stopnow;
步驟5 - 在cmfcmultithreadingdlg類中新增wm_timer訊息。 這是ontimer()的實現
void ccmfcmultithreadingdlg::ontimer(uint_ptr nidevent)
步驟6 - 現在新增乙個樣本函式,用於在cmfcmultithreadingdlg類中的afxbeginthread中使用
uint mythreadproc(lpvoid param)
return true;
}
第7步 - 這是開始執行緒按鈕的事件處理程式的實現,它將啟動執行緒。
void ccmfcmultithreadingdlg::onbnclickedbuttonstart()
第8步 - 這是「停止執行緒」按鈕的事件處理程式的實現,它將停止執行緒。
void ccmfcmultithreadingdlg::onbnclickedbuttonstop()
第9步 - 這是完整的原始檔。
// cmfcmultithreadingdlg.cpp : 實現檔案
//#include "stdafx.h"
#include "cmfcmultithreading.h"
#include "cmfcmultithreadingdlg.h"
#include "afxdialogex.h"
#ifdef _debug
#define new debug_new
#endif
//新增3個全域性變數
int currvalue;
int maxvalue;
bool stopnow;
// 用於應用程式「關於」選單項的 caboutdlg 對話方塊
class caboutdlg : public cdialogex
;#endif
protected:
virtual void dodataexchange(cdataexchange* pdx); // ddx/ddv 支援
// 實現
protected:
declare_message_map()
};caboutdlg::caboutdlg() : cdialogex(idd_aboutbox)
void caboutdlg::dodataexchange(cdataexchange* pdx)
begin_message_map(caboutdlg, cdialogex)
end_message_map()
// ccmfcmultithreadingdlg 對話方塊
ccmfcmultithreadingdlg::ccmfcmultithreadingdlg(cwnd* pparent /*=null*/)
: cdialogex(idd_cmfcmultithreading_dialog, pparent)
void ccmfcmultithreadingdlg::dodataexchange(cdataexchange* pdx)
begin_message_map(ccmfcmultithreadingdlg, cdialogex)
on_wm_syscommand()
on_wm_paint()
on_wm_querydragicon()
on_wm_timer()
on_bn_clicked(idc_button_start, &ccmfcmultithreadingdlg::onbnclickedbuttonstart)
on_bn_clicked(idc_button_stop, &ccmfcmultithreadingdlg::onbnclickedbuttonstop)
end_message_map()
// ccmfcmultithreadingdlg 訊息處理程式
bool ccmfcmultithreadingdlg::oninitdialog()
} // 設定此對話方塊的圖示。 當應用程式主視窗不是對話方塊時,框架將自動
// 執行此操作
seticon(m_hicon, true); // 設定大圖示
seticon(m_hicon, false); // 設定小圖示
// todo: 在此新增額外的初始化**
return true; // 除非將焦點設定到控制項,否則返回 true
}void ccmfcmultithreadingdlg::onsyscommand(uint nid, lparam lparam)
else }
// 如果向對話方塊新增最小化按鈕,則需要下面的**
// 來繪製該圖示。 對於使用文件/檢視模型的 mfc 應用程式,
// 這將由框架自動完成。
void ccmfcmultithreadingdlg::onpaint()
else }
//當使用者拖動最小化視窗時系統呼叫此函式取得游標
//顯示。
hcursor ccmfcmultithreadingdlg::onquerydragicon()
//步驟5 - 在cmfcmultithreadingdlg類中新增wm_timer訊息。 這是ontimer()的實現
void ccmfcmultithreadingdlg::ontimer(uint_ptr nidevent)
//步驟6 - 現在新增乙個示例函式,用於在cmfcmultithreadingdlg類中的afxbeginthread中使用。
uint mythreadproc(lpvoid param)
return true;
}//第7步 - 這是啟動執行緒按鈕的事件處理程式的實現,它將啟動執行緒。
void ccmfcmultithreadingdlg::onbnclickedbuttonstart()
//第8步 - 這是stop thread按鈕的事件處理程式的實現,它將停止執行緒
void ccmfcmultithreadingdlg::onbnclickedbuttonstop()
《全文完》
note:
本文翻譯原文:
建立多執行緒應用程式
定義命名空間在.net中,多執行緒功能是在system.threading命名空間中定義的。usingsystem.threading 啟動執行緒system.threading命名空間中的thread類代表乙個執行緒物件,用這個類物件可以建立新的執行緒,刪除 暫停和恢復執行緒。下面的 使用thre...
建立多執行緒應用程式
定義命名空間 在.中,多執行緒功能是在system.threading命名空間中定義的。usingsystem.threading 啟動執行緒 system.threading命名空間中的thread類代表乙個執行緒物件,用這個類物件可以建立新的執行緒,刪除 暫停和恢復執行緒。下面的 使用threa...
建立多執行緒應用程式
定義命名空間 在.net中,多執行緒功能是在system.threading命名空間中定義的。using system.threading 啟動執行緒 system.threading命名空間中的thread類代表乙個執行緒物件,用這個類物件可以建立新的執行緒,刪除 暫停和恢復執行緒。下面的 使用t...