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

Вниз

И снова Service   Найти похожие ветки 

 
Fiend ©   (2002-07-10 15:37) [0]

Вот код моего сервиса:
procedure TCRService.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
sleep(100);
CRService.ServiceThread.ProcessRequests(false);
end;
StopServer;
end;

Почему то нерегулярно но где то после третьего цикла Запуск-Останов, на останове выдаёт ошибку "Память не может быть read". Долго колупался, проверил все деструкторы своих объектов, что и как выполняеться, всё корректно. Утомился и сделал слегонца другой код:

procedure TCRService.ServiceExecute(Sender: TService);
begin
CRService.ServiceThread.ProcessRequests(true);
StopServer;
end;

И шо ви думаете, ошибка пропала!
С чем связано появление эррора, непонятно. Но очень нехочется чтобы в дальнейшем мой сервис вычудил что то с системой.

Гляданите ПОЖАЛУСТА


 
Fiend ©   (2002-07-10 15:53) [1]

Шо даже намёков на мысли никаких нет??????


 
Skier ©   (2002-07-10 15:54) [2]

>Fiend
А если sleep(100) снести ?


 
Fiend ©   (2002-07-10 16:00) [3]

Если снести эту "Важнейшую" операцию, то как вы прекрасно понимаете, мой сервис тут же отрывает все ресурсы на себя. Оно и понятно. Можно конечно и убрать, не вопрос, тока вот зачем???

Я проверял, все дуструкторы и останавливающие процеды отрабатывают до конца!!!!

Ошибка же возникает ХЗ когда. И я так понимаю, что если моё разрушение отработало до конца, значит ошибку делает не мой код.

А кто, и почему???

Ведб Екзекуте я переделал не сильно, со смысловой точки зрения.


 
Fiend ©   (2002-07-10 18:26) [4]

И всё же разобрался.

Дело было не в синхронизации, как некоторые мне на чате тыкали этим в лицо.

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

Это конечно можно назвать и синхронизацией, но слегка не в том смысле, как например синхронизация с ВЦЛ


 
Skier ©   (2002-07-10 18:28) [5]

>Fiend
Т.е. дело в sleep-е или что-то более хитрое ?


 
Fiend ©   (2002-07-10 18:29) [6]

То Skier ©
нет не в слипе.
Хотя я его и применил, чтобы основной поток при уничтожении, подождал слегка пока порождённые им трэды успели разрушиться



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
8-70834
Baron
2002-03-09 18:18
2002.07.22
GLScene


3-70585
juliasoft
2002-06-27 17:23
2002.07.22
Вопрос по FastReport


3-70647
AlexA
2002-06-27 16:48
2002.07.22
IBDataSet.Lookup


3-70589
XTormentor
2002-06-28 13:51
2002.07.22
РУСИФИКАЦИЯ ДАННЫХ ПРИ РАБОТЕ В Delphi


14-70876
Skywalker
2002-06-24 13:29
2002.07.22
Ord