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

Вниз

TServiceApplication   Найти похожие ветки 

 
TheChups   (2005-02-21 20:37) [0]

Всем привет, есть задача написать сервис, который бы являлся сервером для чата (то есть постоянно висел в памяти). Для этого использую Service Application. Беру пример из хелпа (благо смысл один и тот же). Изменяю событие вот так:

procedure TServerService.ServiceExecute(Sender: TService);
begin
// Это добавляю я
Init; // Загрузка настроек из файла
ContactList := TStringList.Create; // Здесь хранится список юзеров

ServerSocket.Active := True;
while not Terminated do
begin
ServiceThread.ProcessRequests(True);
end;
ServerSocket.Active := False;
end;

И сервис сразу после загрузки операционки вываливается из памяти. Если процедуру Init закоментить, то сервис остаётся в памяти, но при этом не отвечает на запросы клиентов, хотя они к нему подключаюися без проблем. Такое ощущения что не создаётся переменная ContactList, тк всё инфа необходимая для взаимодействия сервер - клиент хранится в ней. Весь код сервиса был сначала написан для обычного приложения, там и тестировался, всё работало без проблем. Вот и вопрос как мне реализовать всё это дело и в чём проблема?


 
Fay ©   (2005-02-21 22:47) [1]

Я не очень-то разбираюсь в VCL-ных службах, но меня очень смущает
вот эта строка.
ContactList := TStringList.Create; // Здесь хранится список юзеров

IMHO, её место в конструкторе. А в ServiceExecute, полагаю, имеет смысл вставлять создание лишь специфичных для каждого коннекта объектов.

Здоровья Вам и счастья.


 
Digitman ©   (2005-02-22 08:50) [2]


> в чём проблема?


ну судя по


> Если процедуру Init закоментить, то сервис остаётся в памяти


поиски источников проблем следует искать как минимум в Init
видимо, где-то там возбуждается исключение, которое ты не ожидал и никак не обрабатываешь


> но при этом не отвечает на запросы


а это уже иная проблема
разберись сначала с первой


> Такое ощущения что не создаётся переменная ContactList


не следует полагаться на ощущения, а нужно просто воспользоваться тем или иным способом отладки сервиса, чтобы иметь инф-цию о реально происходящем в его алгоритме


 
Erik1 ©   (2005-02-22 11:43) [3]

Создай обычный поток и отладь его, а в сервисе(OnStart) запускай его. Получится двойная экономия и для сервиса подходит и в обычный exe слинковать можно. К томуже непридется на форум обращатся, по вопросам отладки.



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

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

Наверх




Память: 0.47 MB
Время: 0.06 c
1-1108560047
Bako
2005-02-16 16:20
2005.03.06
Анимированный GIF и JvRichEdit


1-1108988971
Bogdan
2005-02-21 15:29
2005.03.06
Немогу понять с декларацией


1-1109155839
ТехникПТО
2005-02-23 13:50
2005.03.06
Загрузка картинок в TImage


14-1108516196
БаТоН
2005-02-16 04:09
2005.03.06
ПОЧЕМУ foo и bar() ?


14-1108368694
stone
2005-02-14 11:11
2005.03.06
Lord of The Rings: Battle for middle Earth