Скажите, у меня есть следующий код C ++.
Сначала я создаю ручной таймер ожидания как таковой:
HANDLE hWTimer = CreateWaitableTimer(NULL, FALSE, NULL);
Затем устанавливается заранее определенное время в будущем, чтобы оно срабатывало один раз (фактическое значение предоставляется пользовательским вводом):
double fSeconds2Wait = 10000;
LARGE_INTEGER li;
//Convert to 100 nanosecond intervals (MUST BE NEGATIVE)
li.QuadPart = -10000000LL * (LONGLONG)fSeconds2Wait;
SetWaitableTimer(hWTimer, &li, 0, NULL, NULL, 0);
Тогда у меня есть рабочий поток, который находится в состоянии ожидания, ожидая срабатывания таймера:
WaitForSingleObject(hWTimer, INFINITE);
//Perform actions when timer fires
Вопрос, который у меня возникает, скажем, если я хочу удерживать 'hWTimer' неопределенно долго с возможностью сброса его на другое время позже (по запросу пользователя), как мне это сделать?