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

Вниз

Доступ к переменной главного потока?   Найти похожие ветки 

 
d@vinchi ©   (2009-09-22 10:30) [0]

Вопрос для большинсва детский, но я впервые сталкиваюсь так плотно с потоками и данной ситуацией. В общем приложение является службой. В обработчике создания службы создается TServerSocket и средствами DAO xxx.mdf база данных для ведения логов. В обработчике TServerSocket.OnClientRead происходит анализ полученных данных и при необходимости запись в БД. Если в обработчике TServerSocket.OnClientRead к БД обращаться через глобальные переменные, то возникает ошибка "неверный адрес...". Если БД создавать не в TService.OnCreate, а в обработчике TServerSocket.OnClientRead, то обращение и запись данных проходит етественно нормально, НО при интенсивном потоке входящих данных все это происходит долго, т.к. каждый раз происходит создание объекта DAO, открытие БД, открытие RecordSet.
Предпологаю что проблема в доступе к переменной главного потока из дочернего потока - какое решение применяется в этой ситуации?


 
Сергей М. ©   (2009-09-22 11:38) [1]


> проблема в доступе к переменной главного потока из дочернего
> потока


Обращения именно из дочернего потока из объяснения не очевидны


 
Сергей М. ©   (2009-09-22 11:54) [2]


> В обработчике создания службы создается TServerSocket


Активируется там же ?
Значит обработчики всех событий TServerSocket вызываются в осн.потоке, потому что обработчик TService.OnCreate/OnDestroy вызвается именно в основном. Все прочие события TService возбуждаются в доп.потоке.


 
d@vinchi ©   (2009-09-22 12:07) [3]

Активируется в OnStart, из него же вызывается метод записи лога в котором возникает ошибка... Т.е. если перенести активацию TServerSocket  в OnCreate службы событие OnClientRead будет возникать в основном потоке службы - я правильно понял?


 
Сергей М. ©   (2009-09-22 12:21) [4]

Правильно.


 
d@vinchi ©   (2009-09-22 13:41) [5]

Спасибо! все получилось после небольших переделок...


 
Сергей М. ©   (2009-09-22 13:51) [6]


> все получилось


И теперь у тебя вся ключевая функциональность сервиса работает в осн.потоке ?
Ну и какой тогда смысл в использовании именно сервиса ?



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
2-1253656832
redlord
2009-09-23 02:00
2009.11.08
ansistring


2-1253726909
Алексей Петров
2009-09-23 21:28
2009.11.08
обновление программы


2-1253006175
Гость
2009-09-15 13:16
2009.11.08
Проверить создан ли объект


15-1252528212
Юрий
2009-09-10 00:30
2009.11.08
С днем рождения ! 10 сентября 2009 четверг


15-1252568155
tesseract
2009-09-10 11:35
2009.11.08
Репетиция дня пргораммиста