Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.27;
Скачать: CL | DM;

Вниз

service application (debugging, running :)   Найти похожие ветки 

 
mace   (2003-02-18 12:43) [0]

как?
1. дебагить сервис
2. сделать что б он работал :). То есть когда его запускаешь из Дельфи - он сам закрывается через 30 сек. Если его зарегистрировать
MyService /install
и потом запускать из services.msc, то винда говорит, что ошибки нетути, но и работать оно не будет :)

И кто мне скажет зачем класс TServiceApplication?


 
Mace   (2003-02-19 07:07) [1]

Сам нашёл :)
Просто непонимание специфики сервиса...
Может кому пригодиться:
есть замечательное событие у класса TService: OnExecute
в нём ДОЛЖЕН быть такой цикл:

while not Terminated do begin
// мой код....
// ...........
ServiceThread.ProcessRequests(True);
end;

внутри цикла - вся требуемая логика.
ServiceThread.ProcessRequests(True); - обрабатывает сообщения(как то pause, stop) - если его не будет всё запуститься, но не остановится :)
А дельфи сама наверно паузу ставит 30 сек... что б было видно что работает :)
Касательно TServiceApplication...

Application.Initialize;
Application.CreateForm(TWOL, WOL);
Application.Run;

Вот этот Application есть экземпляр класса TServiceApplication...
А вот в репозитории разницу сами увидите(TService, TServiceApplication)
Вобщем надо внимательнее хелп читать :(
есть там всё(в примере). Правда не объяснено....


 
Alex Konshin ©   (2003-02-19 07:19) [2]

Дебагить сервис рекомендую древним проверенным способом - выодом сообщений с помощью OutputDebugString и просмотром их в DebugView ( http://www.sysinternals.com/ntw2k/freeware/debugview.shtml ), можно и с другой машины. Вот я, например, пускаю сервис на другой машине через MMC удаленно и вижу протокол в реальном времени на своей машине в DebugView. Просто у меня приложение сетевое и нужно видеть взаимодествие клиентов и сервиса.

Для удобства использую такую простую функцию:

procedure Debug( const AFormat : String; Args :Array of const );
begin
try
OutputDebugString(PChar(Format(AFormat,Args)));
except
on E:Exception do
OutputDebugString(PChar(E.ClassName+" on OutputDebugString(PChar(Format("+Quote(AFormat)+",[...])))"));
end;
end;


Еще очень рекомендую посмотреть модуль debug из JCL (JEDI Code Library) http://sourceforge.net/projects/jcl/



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.023 c
1-87378
AnnReal
2003-02-17 16:44
2003.02.27
Трабл с BitBtn, глотает нажатие Enter, а он необх. в др. месте


6-87595
gari
2003-01-10 12:15
2003.02.27
Доброго дня господа.


8-87576
VVVaaa
2002-11-12 11:32
2003.02.27
Проблемка с выводом на image


6-87590
Демонов Е.В.
2003-01-09 13:28
2003.02.27
Вопрос про Доступ


6-87608
ychnic
2003-01-11 11:57
2003.02.27
Сетевой трафик