Я работаю над приложением, в котором мне нужно планировать задачи на основе времени, установленного пользователем.Пользователь может добавлять / изменять / удалять расписания.Для его реализации я рассматриваю возможность использования очередей таймера.Изначально я хотел использовать WaitableTimers, который очень подходит для моих целей, но я не могу заставить свой поток спать, чтобы конкурировать с APC.
Теперь, с очередью таймера, я не уверен, как установить таймер на сигналСистемное время.Я попробовал следующий код, но функция обратного вызова никогда не вызывается
SYSTEMTIME st, lt;
GetSystemTime(&st);
FILETIME ft;
SystemTimeToFileTime(&st, &ft);
ULONGLONG qwResult;
// Copy the time into a quadword.
qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
// Add 20 seconds days.
qwResult += 20 * _SECOND;
HANDLE hTimerQueue = CreateTimerQueue();
HANDLE hTimer;
// Set a timer to call the timer routine in 10 seconds.
if (!CreateTimerQueueTimer( &hTimer, hTimerQueue ,(WAITORTIMERCALLBACK)TimerAPCProc, NULL , qwResult, 0, 0))
{
printf("CreateTimerQueueTimer failed (%d)\n", GetLastError());
return 3;
}