Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
14-1108648630
Ilya___
2005-02-17 16:57
2005.03.06
подскажите, как можно щелчком на Label, открыть броузер с интерне


14-1108508124
GanibalLector
2005-02-16 01:55
2005.03.06
Дайджесты форумов


14-1108112967
yanval
2005-02-11 12:09
2005.03.06
Шиза в интернете (более модератору)


14-1108022908
Хинт
2005-02-10 11:08
2005.03.06
Хостинг: h15 (holm) vs fatal


14-1108648370
Layner
2005-02-17 16:52
2005.03.06
Чем можно прошить мульти сим карту




   Наверх