![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странная ошибка TPFibDatabase [D7, FB 1.5]
yaric © (2004-12-29 12:53:00)У меня система постоена в виде множества плагинов, в которые передается из основного модуля данных Handle:TISC_DB_HANDLE.
Во всех плагинах содаются экземпляры класса TPFibDatabase которые через этот коннект и работают. Так вот все было хорошо но при переходе на FibsPlus 5.1 в некорых плагинах начала возникать ошибка при освобождении экземляра TPFibDatabase(формы на которой он лежит) происходит обращение к function TFIBDatabase.GetBaseLevel: Long; И происходит ошибка. Объяснити что происходит кто сталкивался с этой проблемой.
yaric (2004-12-29 15:43:00) [1]Ведь соединение уже установлено
и при этом участвовала транзакция которая нас не интересует
она лежит где то там в главном дата модуле. Из которого и происходит подгрузка плагинов.
yaric (2004-12-29 15:42:00) [2]Да, зачем я ведь к соединению
могу транзакции цеплять когда угодно. Вот я например внутри плагина это делаю и все работает.
Johnmen (2004-12-29 15:30:00) [3]Не знаю. Но могу утверждать, что работа с БД ВСЕГДА осуществляется в рамках транзакции.
Возможно, что и хендл транзакции надо передавать.....
yaric (2004-12-29 15:17:00) [4]По моему я разобрался в причине ошибки, но обясните почему такое происходит. А причина следующая:
Я передаю Handle:TISC_DB_HANDLE.
Во всех плагинах содаются экземпляры класса TFibDatabase которые через этот коннект и работают. Так вот если не будет запущена ни одна из транзакций связанных с объектом TFibDatabase внутри плагина т.е. конект не используется плагином активно, то происходит эта ошибка. Если же что то через этот коннект сделать, а следовательно стартонуть и завершить какую нибуть транзакцию то все нормально - освобождение происходит без проблем. В чем причина такого поведения Fibs-ов?
Заранее спасибо.
yaric (2004-12-29 14:54:00) [5]Да нет у меня в потоках вычисления
никат не связанные с работой в БД
Johnmen (2004-12-29 14:36:00) [6]Влияет. Один поток - одно соединение. Примерно так...
yaric (2004-12-29 14:35:00) [7]Я все попробовал пакет создавал заново все прекомпилировал.
Фибсы перставлял все равно вылетает.
Еще заметил такая фигня в плагинах где потоки используются
может это как то влияет???
Соловьев (2004-12-29 14:21:00) [8]Да все плагины перкомпилил заново
А *.dcu чистил? может попробовать удалить и пересобрать длл-ки?
Johnmen (2004-12-29 14:16:00) [9]Я бы попробовал проанализировать исходники FIB+...
yaric (2004-12-29 13:59:00) [10]Ну а почему вообще GetBaseLevel вызывается кто нибуть знает
yaric (2004-12-29 13:10:00) [11]Да все плагины перкомпилил заново
Johnmen (2004-12-29 13:08:00) [12]А плагины перекомпилировал ?