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 }