Главная страница
    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.46 MB
Время: 0.029 c
1-1093430215
Реактор
2004-08-25 14:36
2004.09.12
Приритет программы.


14-1093431344
Неопытный
2004-08-25 14:55
2004.09.12
ктонибуть сталкивался с Python + ReportLib


1-1093517817
Иван_1
2004-08-26 14:56
2004.09.12
Как определить какая Windows установлена на компьютере?


4-1091120974
DeMus
2004-07-29 21:09
2004.09.12
Как подключить в программе кассовый аппарат


14-1093107849
Knight
2004-08-21 21:04
2004.09.12
Покупка подержанного автомобиля...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский