招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > .NET技術(shù) > C語言VC下實現(xiàn)定時任務(wù)的方法討論

C語言VC下實現(xiàn)定時任務(wù)的方法討論

2013-06-05 09:16:10
來源:
[導(dǎo)讀] 實現(xiàn)定時任務(wù)無非就是想在未來的某一時刻執(zhí)行一個任務(wù),最先想到的就是WM_TIMER消息。方法1:WM_TIMER消息無論是否是窗口函數(shù)都可以使用它

實現(xiàn)定時任務(wù)無非就是想在未來的某一時刻執(zhí)行一個任務(wù),最先想到的就是WM_TIMER消息。

方法1:WM_TIMER消息無論是否是窗口函數(shù)都可以使用它

啟動:SetTimer(HWND hWnd,UINT uID,UINT uElapse,TIMERPROC lpTimerFunc);停止:KillTimer(UINT uID);

在MFC中封裝了上面的函數(shù)將HWND hWnd參數(shù)去掉即可。

有窗口將lpTimerFunc函數(shù)指針置為空否則寫一個回調(diào)函數(shù)傳進去即可,當(dāng)經(jīng)過了uElapse時就執(zhí)行此回調(diào)函數(shù)。

WM_TIMER權(quán)限低可能被系統(tǒng)丟掉不執(zhí)行,重復(fù)判斷浪費資源。

方法2:使用內(nèi)核對象創(chuàng)建等待定時器

HANDLE CreateWaitableTimer( LPSECURITY_ATTRIBUTES lpTimerAttributes, //安全屬性一般為默認空 BOOL bManualReset, //是否手動重置 LPCTSTR lpTimerName //定生器的名稱默認為空);

設(shè)置等待定時器等待時間BOOL SetWaitableTimer( HANDLE hTimer, //上面的函數(shù)返回的參數(shù) const LARGE_INTEGER* pDueTime, //等待的時間 LONG lPeriod, //間隔的時間 PTIMERAPCROUTINE pfnCompletionRoutine, //APC回調(diào)函數(shù) LPVOID lpArgToCompletionRoutine, //傳進APC回調(diào)函數(shù)的參數(shù) BOOL fResume //是否恢復(fù)系統(tǒng)的節(jié)電模式); DWORD dwRst = WaitForMultipleObjects(1,hTimer,F(xiàn)ALSE,INFINITE);

創(chuàng)建一個線程然后執(zhí)行上面的函數(shù)等待定時器被激活然后執(zhí)行相應(yīng)的任務(wù)。上面只是給了一個想法具體的實現(xiàn)必須清楚多線程編程等知識。此方法作為本人程序中的方法推薦使用。方法3:使用系統(tǒng)的定時任務(wù)或者其他通過WinExec調(diào)用控制臺的命令對實現(xiàn)起來感覺有點亂,而且容易被操作員破壞,例如他禁用了定時任務(wù)的服務(wù)等等。

深圳北大青鳥

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
欧美va亚洲va在线观看日本 | 亚洲日韩欧洲日本国产综合 | 欧美一区二区三区精品日韩 | 婷婷色五月亚洲国产 | 亚洲ⅴa制服丝袜一区二区 亚洲午夜片手机在线播放 无碼国产精品一区 | 亚洲第一网站a√在线观看 午夜福利网站你懂得 |