Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: 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 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
3-79582
Максим
2004-01-29 09:50
2004.02.25
Подключение к базе данных в реальном времени


14-80185
syte_ser78
2004-01-31 09:47
2004.02.25
Создание браузера


4-80353
Kinderr
2003-12-20 15:42
2004.02.25
Диалог


3-79610
Zilog
2004-02-01 17:52
2004.02.25
Создание алиаса и таблицы


7-80337
sden
2003-12-06 15:46
2004.02.25
Проблема с OVERLAPPED