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

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 вся ветка

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



Память: 0.48 MB
Время: 0.019 c
14-80140
Goida
2004-01-26 00:05
2004.02.25
Какие еще есть королевства?


14-80221
MPS
2004-02-05 08:36
2004.02.25
Нужно написать програмку под Дос...


1-79820
romeo
2004-02-10 11:27
2004.02.25
Обработка исключений во время отладки без показа сообщ. об ошибке


14-80207
Cobalt
2004-01-30 17:31
2004.02.25
Функция возвращения короля


3-79659
Zilog
2004-01-30 11:29
2004.02.25
DBGrig. Можно ли раскрасить строчки?




   Наверх