Главная страница
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.013 c
1-70809
Dinara
2002-07-10 15:28
2002.07.22
Как узнать, выделен ли какой-нибудь итем в ListView?


3-70597
Fox_Home
2002-06-28 04:46
2002.07.22
Как избавиться от появления лишних данных в базе?


1-70812
iii
2002-07-10 16:03
2002.07.22
Цвет.


1-70807
MVova
2002-07-10 13:38
2002.07.22
Откуда берется секунда TDataTime и Variant ?????????


1-70793
MaxSit
2002-07-01 02:24
2002.07.22
Копирование ячеек с форматированием в EXCEL