Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.46 MB
Время: 0.028 c
15-1177681245
Kolan
2007-04-27 17:40
2007.05.27
Unified Process, кто использует?


3-1173274618
Mr. D.
2007-03-07 16:36
2007.05.27
Ведение логов изменения некоторой величины


2-1178697461
Garacio
2007-05-09 11:57
2007.05.27
TargetSource.CopyFrom(SourceSize, CopySize);


5-1154280091
askfor
2006-07-30 21:21
2007.05.27
проблема с desingEditor и Proxies..


11-1142836015
BaryVetaL
2006-03-20 09:26
2007.05.27
Инверсный текст в компоненте...