C的定時器timeSetEvent使用


 

MMRESULT timeSetEvent( UINT uDelay, 
                                 UINT uResolution, 
                                 LPTIMECALLBACK lpTimeProc, 
                                 WORD dwUser, 
                                 UINT fuEvent )

        uDelay:以毫秒指定事件的周期
         Uresolution:以毫秒指定延時的精度,數值越小定時器事件分辨率越高。缺省值為1ms。
         LpTimeProc:指向一個回調函數,為用戶自定義函數,定時調用。
         DwUser:存放用戶提供的回調數據。
         FuEvent:指定定時器事件類型: TIME_ONESHOT:uDelay毫秒后只產生一次事件;  TIME_PERIODIC :每隔uDelay毫秒周期性地產生事件。

 

具體應用時,可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在lpTimeProc回調函數中(如:定時采樣、控制等),從而完成所需處理的事件。需要注意的是:任務處理的時間不能大於周期間隔時間。另外,在定時器使用完畢后,應及時調用timeKillEvent()將之釋放。

 

1、timeSetEvent最長時間間隔不能超過1000秒,即1000000毫秒,超過返回失敗,可用CreateTimerQueryTimer或SetTimer(回調的方式)代替

2、timeSetEvent會生成一個獨立的Timer回調線程,屬多線程

3、timeSetEvent可創建高精度定時器,精確到1ms,SetTimer無法精確到1ms

4、timeKillEvent關掉定時器的函數,一定要一一對應,每次timeSetEvent返回的定時器的ID是不一樣的,調用一次timeSetEvent就會產生一次Id,調用了幾次timeSetEvent,就需要調用幾次timeKillEvent ,而且必須是相對應的ID,否則可能出現程序崩潰!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM