Вниз
Скачать: 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.021 c
3-79601
Merry
2004-02-02 13:05
2004.02.25
запрос SQL


8-80045
Tol-123
2003-10-25 19:57
2004.02.25
Размер----ScreenShot


7-80332
Cosinus
2003-12-02 13:37
2004.02.25
Странное влияние монитора портов на обмен данными


1-80009
-=Zerg=-
2004-02-12 10:42
2004.02.25
Как вернуть курсор?


14-80225
Gorlum
2004-02-03 17:39
2004.02.25
3D модели




   Наверх