Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа таймера во время выполнения кода OCX / 2 сообщений из 2, страница 1 из 1
19.08.2008, 18:47
    #35495735
Alexeyenko Alexey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа таймера во время выполнения кода OCX
Всем привет.
Есть таймер, который отслеживает состояние флага и, если надо, делает определенные действия, в зависимости от значения этого флага.

Это флаг - свойство объекта (OCX), посредством которого осуществляется управление устройством. В зависимости от состояния устройста меняется значение флага.
OCX написан на VB.

Нюанс в том, что работа метода объекта OCX может затянуться на некоторое время и в процессе работы меняется значение флага. А таймер не срабатывает в это время, а только по завершении работы метода он начинает в холостую (судя по логу) отрабатывать столько раз, сколько его событий набежало за это время.
А надо чтобы ВО ВРЕМЯ РАБОТЫ метода он смог среагировать на изменение флага и т.п.

AutoYield = .t.

Понимаю, что это обычное дело - поставить в очередь, а потом выполнять, но надо чтобы была параллельность (асинхроность) ;(

Причем, если в OCX поставить MsgBox при изменении флага, то его появление вызывает срабытывание таймера - то есть то, что надо. Вот только сообщение мне на экране не надо. Если ли какой способ инициировать срабатывание таймера ВО ВРЕМЯ работы метода OCX?

PS
сорри за путанность объяснения
...
Рейтинг: 0 / 0
19.08.2008, 21:03
    #35495823
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа таймера во время выполнения кода OCX
Фокс однопоточный. События таймера отрабатываются если прога простаивает (ждет действий пользователя), т.е. если код молотит 5 сек., а таймер поставлен раз в секунду, то по окончанию работы кода таймер отработает 5 раз подряд.
Этого можно избежать если в коде периодически вызывается команда DOEVENT. Команда естественно фоксовая, чтобы использовать в твоем OCXе сделай там какой-нибудь callback метод, вызывай в VB его постоянно, а в фоксе туда пропиши DOEVENT
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа таймера во время выполнения кода OCX / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]