Текущий архив: 2007.05.27;
Скачать: CL | DM;
ВнизSetWaitableTimer, таймер не срабатывает несколько раз.. Найти похожие ветки
← →
Dmitry_177 (2007-04-02 21:57) [0]Нужно сделать чтобы таймер срабатывал каждые 10 секунд например. Делаю я так:
var
hTimer: THandle;
idTimeThread: DWORD;
function ThreadTimer(Param: Pointer): DWORD; stdcall;
begin
WaitForSingleObject(hTimer, INFINITE);
Windows.Beep(800,200);
Result := 0;
end;
...
var
sysTime: SYSTEMTIME;
fTime: FILETIME;
begin
hTimer := CreateWaitableTimer(nil, false, nil);
заполняем sysTime...
SystemTimeToFileTime(sysTime, fTime);
LocalFileTimeToFileTime(fTime, fTime);
SetWaitableTimer(hTimer, TLargeInteger(fTime), 10000, nil, nil, false); // период 10 секунд
CloseHandle(CreateThread(nil, 0, @ThreadTimer, nil, 0, idTimeThread));
end;
И срабатывает почему-то один раз.. Что я не так делаю? Подскажите пожалуйста..
← →
Leonid Troyanovsky © (2007-04-02 23:19) [1]
> Dmitry_177 (02.04.07 21:57)
> И срабатывает почему-то один раз.. Что я не так делаю? Подскажите
После срабатывания таймера ожидающий поток завершается.
Сделай, хотя бы, цикл
while WaitForSingleObject(hTimer, INFINITE) = WAIT_OBJECT_0 do
Хотя, конечно, как заканчивать поток следует продумать тщательней.
--
Regards, LVT.
Страницы: 1 вся ветка
Текущий архив: 2007.05.27;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.054 c