![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с формой из runtime-пакета [D6]
Суслик © (2005-09-07 17:49:00)Исходники, поясняющие вопрос, расположены тут http://www.webfile.ru/505476.
Есть проект Client. Который посредством runtime-пакета PlugAncestor загружает функцией LoadPackage пакет Plug.
Пакет Plug поставляет форму-плугин.
Проект Client создает форму-плугин. При этом Owner у формы = nil.
После создания формы-плугина возбуждается исключительная ситуация, которая в обработчике Application.OnException приводит к закрытию формы.
При этом главная форма Client'а принудительно уничтожает форму плугин и выгружает Plug функцией UnloadPackage.
Если запустить Client и нажать последовательно (сверху вниз) на 3 кнопки, то в итоге в конце програмы будет Access Violation.
Буду крайне признателен, если кто-то ответит, почему происходит AV и что я не так делаю?
Суслик (2005-09-07 18:50:00) [1]Я вроде разобрался с проблемой.
Нужно
либо
после fPlug.Close() делать Application.ProcessMessages()
Либо
fPlug.Close() заменить на fPlug.Free()
Дело в особенностях реализации Close - вызывается Release, который посылает сообщение, которое в исходном моем коде не успевает обработаться.
Суслик (2005-09-07 18:50:00) [2]А... этта
Спасибо Акуличеву. Большое.
Суслик (2005-09-07 17:50:00) [3]Виноват. Правильный адрес такой:
http://www.webfile.ru/505476
(т.е. без точки на конце)