#include
#include
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(&ftime), // Convert file time to large integer
200, // Period time, fire again after 200ms
NULL,
NULL,
0))
{
cout <<"SetWaitableTimer failed" < endl;
};
cout <<"Start Time " < 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 " < endl;
CancelWaitableTimer(hTimer); // Stop timer
CloseHandle(hTimer); // Delete handle
}