[C/C++]windows定時器
阿新 • • 發佈:2019-02-17
#include <stdio.h>
#include <windows.h>
VOID CALLBACK VirtualIDCallback(PVOID lpParameter, BOOLEAN TimeOrWaitFired);
int main()
{
HANDLE handle = NULL;
HANDLE hTimer = NULL;
HANDLE hTimerQueue = NULL;
int arg = 0;
handle = CreateEvent(NULL, TRUE, FALSE , NULL);
if (NULL == handle)
{
printf("CreateEvent失敗\n");
return 1;
}
hTimerQueue = CreateTimerQueue();
if (NULL == hTimerQueue)
{
printf("CreateTimeQueue失敗\n");
return 1;
}
if (!CreateTimerQueueTimer(& hTimer, hTimerQueue, WAITORTIMERCALLBACK(VirtualIDCallback), &arg, 5000, 10000, NULL))
{
printf("CreateTimeQueueTimer失敗\n");
return 1;
}
if (WaitForSingleObject(handle, INFINITE) != WAIT_OBJECT_0)
{
printf("WaitForSingObject失敗\n");
return 1;
}
CloseHandle(handle);
if (hTimer)
{
if (!DeleteTimerQueueTimer(hTimerQueue, hTimer, INVALID_HANDLE_VALUE))
{
Sleep(1000);
if (!DeleteTimerQueueTimer(hTimerQueue, hTimer, INVALID_HANDLE_VALUE))
return 0;
}
}
return 0;
}
VOID CALLBACK VirtualIDCallback(PVOID lpParameter, BOOLEAN TimeOrWaitFired)
{
// 定時器邏輯程式碼
}