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 }