события 2-х таймеров с одинаковым интервалом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

события 2-х таймеров с одинаковым интервалом

Сообщение Space » 29.10.2008 (Ср) 1:40

Есть 2 таймера с интервалом = 1000, запущенные не одновременно. В одном счётчик, в другом вывод счётчика (иначе не нужно). Иногда вывод в виде времени от счётчика показывает посекундно, иногда через 2 секунды. Debug.Print показал, что происходит 2 события одного таймера, затем 2 события другого. Как такое может быть? Задержек в проге и на компе нет. События происходят так:
Таймер1
Таймер2
ожидание 1 сек
Таймер2
Таймер1
ожидание 1 сек
Таймер1
Таймер2
...
т.е. события чередуются неправильно...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: события 2-х таймеров с одинаковым интервалом

Сообщение alibek » 29.10.2008 (Ср) 8:24

Используй один таймер.
"Запущенные не одновременно" — это твоя иллюзия, избавляйся от нее.
Lasciate ogni speranza, voi ch'entrate.

visitor
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 08.10.2008 (Ср) 1:52

Re: события 2-х таймеров с одинаковым интервалом

Сообщение visitor » 29.10.2008 (Ср) 17:51

Событие WM_Timer имеет наинизший приоритет в очереди сообщений. и если не ошибаюсь, система его посылает приложению, только когда приложение в idle. короче точностью тут и не пахнет. Соответственно, и на точный порядок следования сообщений не надейся.


PS:точно не знаю, VB таймеры работают по Callback или по WM_TIMER, но полагаю, что суть от этого меняется мало.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: события 2-х таймеров с одинаковым интервалом

Сообщение Space » 29.10.2008 (Ср) 18:14

допустим, интервал скачет. Но почему он постоянно меняется у одного таймера с завидным постоянством? Возможно, если первый вызов происходит через 1000+15.625, то второй - через 1000-15.625. Но почему, однако? Может, потому что у меня в процедуре одного таймера (_Timer) стоит установка интервала tmr1.Interval=1000?
И ещё - я и не думал, что в очереди сообщений есть приоритеты... Так ведь какое-то сообщение может и не дойти до адресата, если будут в очередь поступать постоянно другие сообщения с высшим приритетом, по идее очередь должна обслуживаться в порядке очереди!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: события 2-х таймеров с одинаковым интервалом

Сообщение alibek » 30.10.2008 (Чт) 11:32

Space писал(а):Возможно, если первый вызов происходит через 1000+15.625, то второй - через 1000-15.625.

Не так. Таймеры тикают не "через".
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 82

    TopList