Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
Суть проблемы: приложении есть подключенный SaDb. Из приложения вызывается форма из DLL, которая использует DataModule из той же DLL. На datamodule тоже есть SaDB, который тоже коннектится к базе. Если этот модуль создается в секции initialization своего юнита, освобождается в finalization, то приложение при закрытии главной формы не выгружается из памяти. При этом замечено: 1. Нормально выгружается, если на момент закрытия активен только один SaDb либо в приложении либо в dll 2. Нормально выгружается, если в finalization не делать модулю Free 3. НЕ выгружается, даже если в finalization или в DataModuleDestroy делать SaDb1.Active := false; 4. Поведение не зависит от использования SharedName, проявляется даже при отдельных коннектах к разным базам. Проверено на WinXP и 2000, Delphi 6 Update pak 2, SaVCL 2.17. Могу привести исходники для воспроизведения ситуации. P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 12:51 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
> Могу привести исходники для воспроизведения ситуации Да, Александр, если это не сложно, то вышли исходники. Обязательно надо в этом разобраться. > P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать? Смысл, наверное, есть. Хотя надо поинтересоваться у других пользователей, нужен отдельный форум или нет. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 14:52 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
В принципе дело хорошее. Можно на РУСУГе открыть раздел бесплатного софта и там выложить их описание и download. Если пользователям будет удобно, то под каждый такой продукт откроем форум. Первыми на очереди было бы неплохо выложить в данный раздел saVCL и MacroSQL (по отношению к нему уже ведутся определенные работы, просто пока не достаток свободного времени). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 15:05 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов> Могу привести исходники для воспроизведения ситуации Да, Александр, если это не сложно, то вышли исходники. Обязательно надо в этом разобраться. Оправил на e-mail в профиле. Перепроверид поведение. Пункт 1 не совсем верен. Если активировать и потом отключить SaDb в Exe, а потом активировать в DLL - все равно не выгружается. Вот если в exe вообще не подключать SaDb - то тогда выгружается. В общем тест там простейший, можно поэкспериментировать. Сергей Гаврилов > P.S. Сергей, может есть смысл на RUSUG форум по SaVCL организовать? Смысл, наверное, есть. Хотя надо поинтересоваться у других пользователей, нужен отдельный форум или нет. Уже поинтересовался . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 15:35 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
Форум про SaVCL уже открыт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2006, 18:28 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
Экспериментальным путем удалось выяснить забавную вещь: при выгрузке делфийного приложения отследить порядок автоматического освобождения (без явного вызова FreeLibrary) загруженных с помощью LoadLibrary dll-библиотек невозможно. Александр, finalization в твоей библиотеке вызывается фактически после выгрузки sadll*.dll (после того, как система вызвала в sadll функцию DllEntryPoint с параметром DLL_PROCESS_DETACH). Если в твоем примере в головной программе в явном виде прописать FreeLibrary (для твоей библиотеки), то вроде все работает и выгружается. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 22:00 |
|
||
|
SaVCL: невыгрузка приложения из памяти при использовании DLL
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов пишет: > Александр, finalization в твоей библиотеке вызывается фактически после > выгрузки sadll*.dll Что-то подобное я подозревал > Если в твоем примере в > головной программе в явном виде прописать FreeLibrary (для твоей > библиотеки), то вроде все работает и выгружается. Смысл ясен. Я проще поступил - убрал finalization. Он там неактуален - поставил чисто из привычки парности - если что-то создаешь, то не забудь освободить Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 22:23 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33661689&tid=2012905]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 347ms |

| 0 / 0 |
