Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизApplication.ProcessMessage в службах Найти похожие ветки
← →
Avsam (2004-02-12 16:48) [0]Приложение написано как служба (Service).
Надо использовать Application.ProcessMessages.
Чем его и как заменить? Или может он и не нужен?
← →
Семен Сорокин (2004-02-12 16:54) [1]сначала расскажи зачем тебе Application.ProcessMessages в сервисе?
← →
avsam (2004-02-12 16:59) [2]сервис работает с коммуникациями.
Посылает команду и надо подожать 10 секунд ответ.
t1 := GetTickCount;
repeat
// Application.ProcessMessages;
until GetTickCount - t1 > ConstTime
Чем его заменить?
← →
Тимохов (2004-02-12 16:59) [3]sleep
← →
Семен Сорокин (2004-02-12 17:01) [4]в твоем случае можно заменить точкой с запятой - ; :))
а вообще вместо цикла используй [3]
← →
avsam (2004-02-12 17:03) [5]То есть, я так понял, система сама отдает время для других процессов?
← →
Digitman (2004-02-12 17:03) [6]
> Надо использовать Application.ProcessMessages
зачем ?
← →
avsam (2004-02-12 17:04) [7]2 Digitman:
См. [2]
← →
Тимохов (2004-02-12 17:04) [8]
> Digitman © (12.02.04 17:03) [6]
>
> > Надо использовать Application.ProcessMessages
>
>
> зачем ?
А вдруг тики без этого течь не будут? :)))))
← →
Семен Сорокин (2004-02-12 17:06) [9]То есть, я так понял, система сама отдает время для других процессов?
ну ты же нигде в своей программе не добавляешь Application.ProcessMessages для того чтобы, например в WindowsCommander отрисовалась иконка?
← →
Digitman (2004-02-12 17:06) [10]
> Чем его заменить?
нормальным асинхронным таймером
← →
Тимохов (2004-02-12 17:08) [11]чем ему sleep то не походит?
Зачем асинхронный таймер?
← →
Digitman (2004-02-12 17:11) [12]
> avsam © (12.02.04 16:59) [2]
> сервис работает с коммуникациями.
угу... и в документации на "коммуникации" прямо так и написано : выхжать с пом. GetTickCount время t1
правильно я телепатировал ?
← →
avsam (2004-02-12 17:23) [13]2 Digitman:
Нет. Коммуникация происходит не напрямую.
То есть сервис не работет с железом. Данные передаются через базу данных. Сервис пишет в таблицу запись. Другая программа, которая работает на другом компе, периодически считывает и посылает в Beckhoff-контроллер. Ответ приходит и помещается в другую таблицу, откуда сервис его уже и читает.
Это немного успрощенно, но принцип такой.
Время не критично. Плюс-минус 10 секунд роли не играет.
Вот этот период сервис и должен выждать.
← →
Тимохов (2004-02-12 17:24) [14]
> avsam © (12.02.04 17:23) [13]
Делай sleep - и дело с концом
← →
Семен Сорокин (2004-02-12 17:25) [15]avsam © (12.02.04 17:23) [13]
тогда Sleep тебя полностью устроит.
← →
Digitman (2004-02-12 17:29) [16]
> Ответ приходит и помещается в другую таблицу, откуда сервис
> его уже и читает
на то есть понятие "подтвержденная транзакция"
← →
avsam (2004-02-12 17:48) [17]
> Digitman © (12.02.04 17:29) [16]
Может и есть. Не в курсе.
Правда, контроллер не один, а несколько десятков.
Предагаешь, посидеть и переписать весь софт?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c