Использование CoFreeUnusedLibraries приводит к Access Violat
Добавлено: 15 авг 2006, 15:47
Добрый день!
Столкнулся с непонятной проблемой, бьюсь уже бог знает сколько времени, уже незнаю даже где копать... может кто чего подскажет?
итак проблема:
Если создать такое тестовое приложение
MainFrom->ChildForm->ActiveXForm1->ActiveXForm2->ActiveXForm3
___________________ChildAX1.ocx__ChildAX2.ocx__ChildAX3.ocx
где каждая ActiveX форма находиться в своем *.ocx, а на событие Application.OnIdle вызывать coFreeUnusedLibrary, то после 10 раз выполнения следующей последовательности: создать ChildForm, отобразить, закрыть ChildForm, освободить *.ocx с помощью coFreeUnusedLibrary, то на 11 раз происходит Access Violation в модуле ChildsAX2.ocx. Если же убрать вызов coFreeUnusedLibrary, то все будет работать нормально, но только *.ocx никогда не выгрузяться, даже если все созданные из них ActiveX формы давно убиты... Все ActiveX формы дефаултовые, никакого кода нет, кроме как создания в ActiveXFrom1 ActiveXForm2, а в ActiveXForm2 ActiveXForm3.
Создание ActiveX формы идет следующим образом:
FActiveXForm:=TActiveXForm1.Crate(Self);
FActiveXForm.Parent:=Self;
FActiveXForm.Align:=alClient;
тестовое приложение пробовал компилить под Delphi6,2006 абсолютно все идентично...
Как добится нормальной работы данного прилдожения?
Очень надеюсь на вашу помощь...
Столкнулся с непонятной проблемой, бьюсь уже бог знает сколько времени, уже незнаю даже где копать... может кто чего подскажет?
итак проблема:
Если создать такое тестовое приложение
MainFrom->ChildForm->ActiveXForm1->ActiveXForm2->ActiveXForm3
___________________ChildAX1.ocx__ChildAX2.ocx__ChildAX3.ocx
где каждая ActiveX форма находиться в своем *.ocx, а на событие Application.OnIdle вызывать coFreeUnusedLibrary, то после 10 раз выполнения следующей последовательности: создать ChildForm, отобразить, закрыть ChildForm, освободить *.ocx с помощью coFreeUnusedLibrary, то на 11 раз происходит Access Violation в модуле ChildsAX2.ocx. Если же убрать вызов coFreeUnusedLibrary, то все будет работать нормально, но только *.ocx никогда не выгрузяться, даже если все созданные из них ActiveX формы давно убиты... Все ActiveX формы дефаултовые, никакого кода нет, кроме как создания в ActiveXFrom1 ActiveXForm2, а в ActiveXForm2 ActiveXForm3.
Создание ActiveX формы идет следующим образом:
FActiveXForm:=TActiveXForm1.Crate(Self);
FActiveXForm.Parent:=Self;
FActiveXForm.Align:=alClient;
тестовое приложение пробовал компилить под Delphi6,2006 абсолютно все идентично...
Как добится нормальной работы данного прилдожения?
Очень надеюсь на вашу помощь...