Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
1-1093514500
Piroman
2004-08-26 14:01
2004.09.12
Разыскивается wwIntl.dcu!


4-1091009479
Deker
2004-07-28 14:11
2004.09.12
Работа с приложениями в памяти


14-1092977204
Рамиль
2004-08-20 08:46
2004.09.12
Ведение реестра акционеров эмитентом


14-1093261320
onix
2004-08-23 15:42
2004.09.12
Русские буквы


4-1091092419
Morphin
2004-07-29 13:13
2004.09.12
Ограничение нагрузки на CPU





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский