最近寫了個程式用計時器創建另外的一個執行緒每隔一秒鐘執行一些東西,在回呼函式里面怎么樣來共享類里面的資料呢?有的陳述句我想讓它只在回呼函式里面執行一遍請問要怎么辦呢?
uj5u.com熱心網友回復:
在類中實作幾個介面函式。uj5u.com熱心網友回復:
把類指標等作為函式引數傳遞過去uj5u.com熱心網友回復:
函式被不同的執行緒呼叫,就屬于不同的執行緒,只要的是,你必須保證同步,使用臨界區同步最簡單uj5u.com熱心網友回復:
想辦法將相關的引數作為回呼函式的引數。或者你定義一個全域的或者static成員,回呼函式能夠訪問到即可。uj5u.com熱心網友回復:
共享資料的話只要把資料設定為全域變數就好了,引數傳遞也可以只執行一次的話可以設定一個全域變數
比如
int tis=0;//定義全域變數
if(tis==0)
{
//你要執行的陳述句
tis++;
}//放在回呼函式中
uj5u.com熱心網友回復:
類指標傳入,static或者全域的物件uj5u.com熱心網友回復:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void CCashUnitAgeTestDlg::OnOK()
{
AfxBeginThread(ProcRunThread, (LPVOID)this); // 傳入物件指標
}
void CCashUnitAgeTestDlg::vShowResult(LPCTSTR p_pcTestInfo)
{
......
}
UINT ProcRunThread(LPVOID pParam)
{
// 轉換
CCashUnitAgeTestDlg* pDlg = (CCashUnitAgeTestDlg*)pParam;
pDlg->vShowResult()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126398.html
標籤:進程/線程/DLL
上一篇:新建MFC應用程式報錯如何解決
