Главная страница
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.009 c
1-70817
Андрусь
2002-07-10 18:37
2002.07.22
реакция на изменение размера


3-70596
den74
2002-06-27 16:41
2002.07.22
DBGrid


3-70660
Сержик
2002-07-02 11:45
2002.07.22
Как бы генератор установить на max?


3-70671
Aleksandr
2002-07-02 12:26
2002.07.22
Как можно вылечить такую ошибку:


1-70682
Филипп
2002-07-11 02:01
2002.07.22
поиск по маске