Вниз
Скачать: CL | DM;

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

← →
Eagle Owl ©   (2003-12-01 22:05) [0]

Вечер добрый, мастера!
Есть объект Timer типа TTimer, интервал задан в 20мс.
Кто знает, как будет вызываться процедура OnTimer, если код в ней не успевает выполниться за это время.
Спасибо.


← →
MagaSoft ©   (2003-12-01 22:23) [1]

поясните вопрос, а то что-то я не понял, вас интересует в какой последовательности?


← →
Eagle Owl ©   (2003-12-01 22:33) [2]

Вызывается первый раз Timer1.Timer, через 20мс по идее она должна вызываться ещё раз и так далее. Но если код не успевает выполниться за эти 20мс, что будет происходить с вызовом этой процедуры?


← →
BlackKing   (2003-12-01 23:54) [3]

jesli procedura ne otdel"nij process, to timer ne srabotajet poka procedura ne otrabotajet svojo.


← →
ЮЮ ©   (2003-12-02 02:29) [4]

>BlackKing (01.12.03 23:54) [3]
При условии, что в обработчике нет Application.ProcessMassage


← →
Спрашивающий_   (2003-12-02 06:55) [5]

Если я не ошибаюсь минимальное число млсек с которым вообще
TTimer срабатывает в районе 50 ms


← →
TUser ©   (2003-12-02 11:46) [6]


> 50 ms

55 ms


← →
Семен Сорокин ©   (2003-12-02 11:54) [7]

> 55 ms

только что измерил - 57.36 ms
не очень точно правда - у секундомера на часах погрешность есть


← →
NikeOLD   (2003-12-02 12:15) [8]

Зависнет у тебя все через некоторое время. Уйдет в бесконечный OnTimer. Вообще стандартный Timer не работает на интервалах менее 50 ms. Дело в том, что сообщение WM_TIMER не единственное, посылаемое твоему приложению системой.
Если хочешь интервалы в 1 ms получить используй мультимедийный тимер timeSetTimeEvent и timeKillTimeEvent кажется. Они работают в собственном потоке - без сообщения WM_TIMER обходится.


← →
Юрий Федоров ©   (2003-12-02 12:20) [9]

Насколько я понимаю, WM_TIMER ставится в очередь сообщений и не будет отработано, пока перед ним есть сообщения в очереди.
Следовательно пока система занята, никакие OnTimer отрабатываться не будут


← →
NikeOLD   (2003-12-02 12:26) [10]

Именно, но где ты видел приложение, которое получает сообщения 100% работы своего времени?
У меня например по OnTimer опрашивается состояние 30 компов. Это занимает около 18-24 секунд. Если я ставлю значение Interval меньше 25, то программа уходит в бесконечность. Событие OnTimer посылается даже когда основное окно программы закрыто модальным окном. Я могу в это время работать с меню и т.п.


← →
Семен Сорокин ©   (2003-12-02 12:28) [11]

а если в обработчике OnTimer добавить
Timer.Enabled := false;
try
...// долгая обработка
finally
Timer.Enabled := true
end


← →
NikeOLD   (2003-12-02 12:30) [12]


> > 55 ms
>
> только что измерил - 57.36 ms
> не очень точно правда - у секундомера на часах погрешность
> есть
\
Не секундомером мерить надо а хотябы GetTickCount, но и это погрешность дает, правда существенно ниже.


← →
panov ©   (2003-12-02 12:40) [13]

55msec - Win98
10msec - Winnt,W2000,XP


← →
NikeOLD   (2003-12-02 12:50) [14]


> panov © (02.12.03 12:40) [13]

Если стоит вопрос о переносимости на платформы, то это уже критично. Если платформа только одна, см. [13]



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
3-36534
st_av
2003-11-21 01:58
2003.12.12
Описание EhLib


1-36670
A JI E LLI A
2003-11-30 13:22
2003.12.12
Переменные


7-36862
RS19
2003-10-05 18:23
2003.12.12
Нестандартная работа с LPT


6-36785
LOGic
2003-10-15 14:57
2003.12.12
Уважаемые мастера !! вот с такой проблемой столкнулся нужно по PO


3-36580
Duber
2003-11-19 16:00
2003.12.12
Есть ли СУБД в которых не нужно использовать посредников типа BDE




   Наверх