Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c