![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как совместить сессию и TDataBase потока с bdeAPI? [D7, MSSQL]
Aleksandr. © (2004-08-27 15:41:00)Согласно правилам, каждый поток должен для работы с БДЕ юзать свой TSession и свой TDataBase. Но у меня в этих потоках истчо и выполняются функции BDE типа dbiDoRestructure и dbiPackTable, для которых функция dbiOpenDataBase наверняка ведь возвращает какой-то свой хэндл и сессию, не совпадающие с VCL-овскими. А как их совместить?
Aleksandr. (2004-08-27 19:34:00) [1]Не помогает.
clickmaker (2004-08-27 18:48:00) [2]
> [7] Aleksandr. (27.08.04 18:30)
а если DbiInit вызвать в этом потоке?
Aleksandr. (2004-08-27 18:30:00) [3]clickmaker © :
Проблема в том, что поток вешается в системе (и никакими ТерминатеТреад не снимается), если внутри него работа с БДЕ проводится не через собственные ДатаБазе и Сессион. В какой-то гнусный момент происходит сбой БДЕ и все - до свидания.
clickmaker (2004-08-27 17:52:00) [4]
> [5] Aleksandr. (27.08.04 16:51)
Дык а в чем проблема-то? Не срабатывает функция, что-ли?
Aleksandr. (2004-08-27 16:51:00) [5]clickmaker © :
Так а если она через системную сессию полезет? Из другого-то потока?
clickmaker (2004-08-27 16:29:00) [6]
> [3] Aleksandr. (27.08.04 16:15)
а что тебе это так волнует? пусть открывает на здоровье
Aleksandr. (2004-08-27 16:15:00) [7]Не, не понял.
Вот функция DbiGetLDName для получения языка таблицы, у нее в параметрах вообще не юзается никакой хендл. А ведь наверняка при ее вызове она в нарушение правила каку-то свою сессию и свою hDBIDB откроет...
Aleksandr. (2004-08-27 15:59:00) [8]Понял, спасибо.
clickmaker (2004-08-27 15:50:00) [9]TSession.Handle
TDatabase.Handle