Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

WaitableTimer   Найти похожие ветки 

 
Teapot   (2004-06-24 00:16) [0]

Кто-то может дать реально работающий пример использования WaitableTimer?

Уже все перечитал, и Help и MSDN, не могу понять как пользоваться этой штукой. С SetTimer разобрался, но мне нужен WaitableTimer.

Можете помочь пожалуйста?


 
jack128 ©   (2004-06-24 00:45) [1]

 hTimer: THandle;
 dieTime: INt64;
 i: Integer;
begin
 hTimer := CreateWaitableTimer(nil, False, nil);
 if hTimer = 0 then
   RaiseLastWin32Error;
 try
   dieTime := -20000000; // первый раз таймер сработает через 2 сек (через 20000000 сто наносекундных интервалов)
   if not SetWaitableTimer(hTimer, dieTime,
       1000,  // а дальше будет срабатывать каждую секунду
   nil, nil, False) then
     RaiseLastWin32Error;
   for i := 0 to 10 do
     case WaitForSingleObject(hTimer, 11000) of // ждем срабытывания таймера
       WAIT_OBJECT_0: Memo1.Lines.Add("wait object");
       WAIT_TIMEOUT: Memo1.Lines.Add("Timeout");
       WAIT_ABANDONED: Memo1.Lines.Add("WAIT_ABANDONED");
     end;
   CancelWaitableTimer(hTimer); // Прекращает "тикание" таймера
 finally
   CloseHandle(hTimer);
 end;
end;


 
GuAV ©   (2004-06-24 01:08) [2]


>  if not SetWaitableTimer(hTimer, dieTime,
>        1000,  // а дальше будет срабатывать каждую секунду
>    nil, nil, False) then
>      RaiseLastWin32Error;

Win32Check(... )  :-P


 
Teapot   (2004-06-24 01:29) [3]


> jack128 ©   (24.06.04 00:45) [1]

Спасибо. буду разбираться....

В разных источниках написано по разному, то WaitableTimer работает в win98, а где-то написано что только под NT.

Кто то может сказать точно?


 
Fay ©   (2004-06-24 06:40) [4]

Requirements
 Windows NT/2000/XP: Included in Windows NT 4.0 and later.
 Windows 95/98/Me: Included in Windows 98 and later.


 
Тимохов ©   (2004-06-24 10:29) [5]


> Teapot   (24.06.04 01:29) [3]

читай рихтера там все очень хорошо описано.

поищи 4ое издание в электронном виде. Я его видел в сети. Если не ошибаюсь на сайте Анатолия Подгорецкого.


 
Fay ©   (2004-06-24 13:09) [6]

2Тимохов ©   (24.06.04 10:29) [5]
Platform SDK достаточно 8)


 
GrayFace ©   (2004-06-24 18:10) [7]

Дайте ссылку на Анатолия Подгорецкого.


 
jack128 ©   (2004-06-24 18:14) [8]


> GrayFace ©   (24.06.04 18:10)
> Дайте ссылку на Анатолия Подгорецкого.

я те в ветке про асм сказал и здесь повторю - в его анкету загляни


 
Sapersky   (2004-07-26 12:42) [9]

Вот ещё по теме: почему-то в Win2000 устанавливается только кратный 15 мс интервал.

FTimer:=CreateWaitableTimer(nil, False, nil);

В начале и после каждой сработки:

NextInt:=20;
nInt64:= - Round(NextInt * 10000);
SetWaitableTimer(FTimer, nInt64, 0, nil, nil, False);

Если установить NextInt<=15, будет 15, иначе 30, 45 и т.д.
А мне вот нужно, например, 20.
Точнее, интервал предполагается динамически изменять (поэтому периодический таймер не подходит), но оно даже статически не ставится то, что нужно.
Измерение интервала делается QueryPerformanceCounter.


 
Sapersky   (2004-07-28 12:31) [10]

Что, совсем никаких идей?
Рихтера почитал, но относительно возможных интервалов у него ничего нет... указывается только, что точность больше, чем у обычных таймеров.



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1093598663
Mim1
2004-08-27 13:24
2004.09.12
Использование графики в формате Jpeg в CLX


1-1093504445
tamagavk
2004-08-26 11:14
2004.09.12
Цветовая гамма Windows XP


4-1091101641
ilop
2004-07-29 15:47
2004.09.12
Как закрыть системный процесс типа process.exe


11-1079333601
M5
2004-03-15 09:53
2004.09.12
Как работать со списками List и StrListEx?


9-1085123883
Bond
2004-05-21 11:18
2004.09.12
Аналоги TBitMap