SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Использование форм в DLL (Корректный вызов формы и освобождение памяти при закрытии)
Использование форм в DLL [сообщение #3189] Wed, 27 September 2023 17:00 Переход к предыдущему сообщению
LeGO в настоящее время не в онлайне  LeGO
Сообщений: 4
Зарегистрирован: September 2023
Junior Member
Всем привет, не ругайтесь, но мы используем формы в dll  :d .
В общем и целом момент такой:
Разрабатываем приложение MDI, дочерние окна(модули) которой содержаться в dll. При нажатии кнопки меню в главном окне соответственно вызывается нужный модуль с формой. Обновление этих dll (если что-то в проекте поменяли), происходит в момент запуска программы (сравниваются версии dll на пользовательском ПК и сервере и, если есть различие, заменяются более свежими). Стоит задача проверять наличие более новой версии dll не только при запуске программы, но и в момент ее работы, при вызове этой dll по нажатию кнопки в меню. Сделали, но есть момент: обновление проходит нормально только если dll с формой до этого ни разу не вызывалась в рамках текущего запуска основной формы. Если же dll хоть раз вызвали, при замене файла - ошибка 5 "Отказано в доступе". В ручную тоже не дает удалять - "Файл занят основным приложением".
Накидал тестовый проект с вызовом dll. В самой dll - Форма пустая и одна экспортируемая функция(просто возвращает рандомное число). В основном проекте две кнопки, одна вызывает функцию из этой dll, вторая показывает из нее же форму. Ок, запускаем: при вызове просто функции (программу не закрываем), она отрабатывает, и есть возможность dll удалить вручную. При нажатии на вторую кнопку показываем форму из dll, закрываем ее, и... не можем удалить файл dll. Занят. Чем, не понятно. Freelibrary, CloseHandle, TerminateProcess не помогают. Может кто сталкивался с таким? Что может держать dll и как с этим бороться?

С уважением, LeGO   
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Смещение рисунка в Image
Следующая тема: Заполнение полей голосом. Запись звука с микрофона и сохранение в wav для дальнейшего распознования.
Переход к форуму:
  


Текущее время: Thu Dec 19 14:50:51 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00846 секунд