Форум: "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