Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-87560
Checist [root]
2003-02-17 10:15
2003.02.27
Цвет ячейки в StringGrid


3-87313
samson
2003-02-07 19:39
2003.02.27
отчёт


1-87435
anton2v
2003-02-18 12:16
2003.02.27
RadioButton ?


1-87459
Alessio2003
2003-02-18 21:47
2003.02.27
TMemo


1-87554
Leviathan
2003-02-17 12:39
2003.02.27
Классы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский