我的位置: 首頁 > 學習專區 > .NET技術 > C語言VC下實現定時任務的方法討論

C語言VC下實現定時任務的方法討論

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

實現定時任務無非就是想在未來的某一時刻執行一個任務,最先想到的就是WM_TIMER消息。

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

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

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

有窗口將lpTimerFunc函數指針置為空否則寫一個回調函數傳進去即可,當經過了uElapse時就執行此回調函數。

WM_TIMER權限低可能被系統丟掉不執行,重復判斷浪費資源。

方法2:使用內核對象創建等待定時器

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

設置等待定時器等待時間BOOL SetWaitableTimer( HANDLE hTimer, //上面的函數返回的參數 const LARGE_INTEGER* pDueTime, //等待的時間 LONG lPeriod, //間隔的時間 PTIMERAPCROUTINE pfnCompletionRoutine, //APC回調函數 LPVOID lpArgToCompletionRoutine, //傳進APC回調函數的參數 BOOL fResume //是否恢復系統的節電模式); DWORD dwRst = WaitForMultipleObjects(1,hTimer,FALSE,INFINITE);

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

深圳北大青鳥

評論
熱點專題
>>
相關文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
日本欧美一区二区三区高清 | 香港三日本三级少妇三级99 | 中文字幕乱码无遮挡精品视频 | 亚洲欧美日韩性爱一区精品 | 人妖视频一区二区三区 | 在线a免费线上看 |