Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
15-1252441811
Юрий
2009-09-09 00:30
2009.11.08
С днем рождения ! 9 сентября 2009 среда


15-1252299382
Andy BitOff
2009-09-07 08:56
2009.11.08
Java


8-1194133995
POMbI4
2007-11-04 02:53
2009.11.08
Конвертирование AVI в BMP


15-1252605651
d@vinchi
2009-09-10 22:00
2009.11.08
Отобразить дные записи с HTML форматированием


2-1253771858
Knight
2009-09-24 09:57
2009.11.08
Можно снять изображение с формы как-то ещё кроме GetFormImage?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский