PDA

Просмотр полной версии : SetWaitableTimer()



Absurd
09.06.2004, 14:10
Надо бы мне установить таймер (SetWaitableTimer) чтобы он сигналил в начале каждой минуты. Брать текщее время, прибавлять к минутам один и задавать интервал в одну минуту как-то стремно.

Romeo
09.06.2004, 16:18
Ну а где вопрос? Советуешься как это слелать, что ли?

Absurd
09.06.2004, 17:33
Цель: Мне надо организовать тред, который был бы заблокирован ( WaitForSingleObject(<какой-то хендл>,INFINITE) ).
Каждую минуту (17:25:00,17:26:00,17:27:00, etc... ) <какой-то хендл> должен приводиться в сигнальное состояние, и на время разблокировать этот тред.
Тред делает какие-то вещи и опять блокируется в ожидании пока <какой-то хендл> опять приведётся в сигнальное состояние.
WM_TIMER использовать не хочу.

Сложности: Надо выбрать 2-й параметр для SetWaitableTimer() (а именно const LARGE_INTEGER * pDueTime). Не случилось бы так, чтобы к тому моменту, когда все заработает, время уже прошло.

ЗЫЖ По моему было достаточно понятно.
ЗЗЫЖ А у вас на форуме по ходу время UTC а не Московское.

Hawk
10.06.2004, 08:14
По моему SetWaitableTimer для этих целей и придуман. С абсолютной точностью по времени в виндах ты все равно ни чего не сможешь сделать. Можно за секунду например в 59 секунд ставить таймер, хотя это всеранвно не гормантированно

Юрий Соколов
22.10.2013, 16:14
для такой задачи лучше открыть отдельный поток, где сравнивать GetTickCount() минуту и делать ProccessMessages(), а потом signal семафору

Romeo
22.10.2013, 16:46
Откопал же тему за 2004 год. Сейчас этот Absurd уже матёрый программист, который и не вспомнит о том, что такое писал :)