Stay Hungry , Stay Foolish

君子生非异也,善假于物也

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

windows下定时器使用实例

#include <iostream>
#include <Windows.h>

using namespace std;

void TimerDemo()
{
    int count = 0;    // Iteration counter

    HANDLE hTimer = NULL;    // WaitableTimer handle
    hTimer = CreateWaitableTimer(    // Create waitable timer
        NULL,
        FALSE,    // Autoreset --> timer restarts counting after event fired
        NULL);

    SYSTEMTIME time;        // System time structure
    GetSystemTime(&time);    // Curren time
    time.wSecond += 3;        // Wait 3 sec

    FILETIME ftime;    // File time (expected by SetWaitableTimer)
    SystemTimeToFileTime(&time, &ftime);    // Convert system to file time


    if(!SetWaitableTimer(    // Set waitable timer
        hTimer,    // Timer handle
        reinterpret_cast<LARGE_INTEGER*>(&ftime),    // Convert file time to large integer
        200,    // Period time, fire again after 200ms
        NULL, 
        NULL,
        0))
    {
        cout << "SetWaitableTimer failed" <<  GetLastError() << endl;
    };

    cout << "Start Time " << GetTickCount() << endl;

    while(WaitForSingleObject(hTimer, 5000) == WAIT_OBJECT_0){    // Wait for timer event
        cout << "CALLED " << ++count << endl;
        if(count+1 > 50){    // Exit after 5 events
            break;
        }
    }

    cout << "End Time " << GetTickCount() << endl;

    CancelWaitableTimer(hTimer);    // Stop timer
    CloseHandle(hTimer);            // Delete handle

}
posted on 2016-07-15 16:46  octocat  阅读(277)  评论(0编辑  收藏  举报