Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зависает программа при использовании EventAlerter [D7, Firebird]


Страницы:   1 2

akss ©   (2008-12-08 15:43:00) 

Такой вопрос - не у кого не возникало проблем при регистрации событий
в TSIBfibEventAlerter? У меня при регистрации события в
TSIBfibEventAlerter иногда зависает программа(иногда потом развисает
но чаще нет), частота зависания примерно 1 к 4 или к 3 примерно. Делаю
всё по примеру FibPlus5 и при этом в примере с тестовой базой всё в
порядке, но когда я и его подключаю к рабочей только для прослушки
событий, то и он зависает!!! мож кто сталкивался с этим багом.

Заметил что зависания появляются чаще если количество подключений к БД
увеличивается(т.е С утра пока не кто не работает зависает 1 раз
примерно за 7-10 запусков, а днём почти каждый второй запуск приводит
к зависанию, или даже чаще)

Нашёл конкретное место зависания в модуле IB_Intf это функция


function TIBClientLibrary.isc_que_events(status_vector: PISC_STATUS;
db_handle: PISC_DB_HANDLE; event_id: PISC_LONG; length: Short;
event_buffer: PChar; event_function: TISC_CALLBACK;
event_function_arg: PVoid): ISC_STATUS;
begin
if Assigned(Fisc_que_events) then
Result:= Fisc_que_events(status_vector, db_handle,event_id,
length, event_buffer, event_function, event_function_arg
)
else
raise
EAPICallException.Create(Format(SCantFindApiProc,
['isc_que_events',FLibraryName]));
end;


и на строчке


Result:= Fisc_que_events(status_vector, db_handle,event_id,
length, event_buffer, event_function, event_function_arg
)


происходит зависание.
Как я понял в этот момент происходит регистрация события как объекта
(но если честно мне ваще не понятно чё здесь происходит), но если
данная процедура не возвратит результат, то отлавливаться события не
будут.
Подскажите мне, пожалуйста, у кого возникала уже подобная проблема.

Delphi7, Firebird 2.0, FibPlus5


Сергей М.   (2008-12-08 16:08:00) [21]


> Это происходит не в потоке


В Win32 ничтоне может происходить "не в потоке".


> при вызове метода  FIBEvent.RegisterEvents


В какомпотоке ?


akss   (2008-12-08 16:05:00) [22]


> В каком потоке ?


Это происходит не в потоке, это при вызове метода  FIBEvent.RegisterEvents;
он тупо иногда зависает (вернее часто).


Сергей М.   (2008-12-08 15:49:00) [23]


> этот момент происходит регистрация события как объекта


В каком потоке ?


Сергей М.   (2008-12-08 15:49:00) [24]


> этот момент происходит регистрация события как объекта


В каком потоке ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо