Вниз
Скачать: CL | DM;

Выгрузить библиотеку...   Найти похожие ветки 

← →
@Ujin ©   (2003-10-31 13:20) [0]

Есть библиотеки, хранящие некоторы классы. Для каждого класса имеется счетчик объектов, ссылающихся на этот класс. Каким образом можно выгрузить библиотеку, когда счетчик ссылок обнуляется?...
Дело в том, что в деструкторе класса выгрузку библиотеки произвести нельзя. Есть ли какая-то альтернатива?


← →
Юрий Федоров ©   (2003-10-31 13:22) [1]

Думаю что только снаружи.
В COM насколько я понимаю, проверка DllCanUnloadNow производится по таймеру.
Тут можно передавать в нее CallBack, который будет ее выгружать путем отправки PoasMessage


← →
@Ujin ©   (2003-10-31 13:29) [2]

Юрий Федоров >
Какраз по таймеру я сейчас и работаю... Т.е. не совсем по таймеру... У меня есть процесс, который занимается проверкой счетчиков классов и отгружает неиспользуемые библиотеки... Но мне этот подход не совсем нравится из тех соображений, что некоторые классы могут использоваться "раз в 100 лет", а некоторые буквально постоянно, а система должна быть общей (однотипной) для всех библиотек... Вот загвоздочка получилась при переписывании объектов-оболочек для библиотек.
Слепил общий интерфейс для заргузки/отгрузки библиотеки и к нему базовый класс, реализующий функции. И очень хочется уйти от многопоточной схемы...


← →
Юрий Зотов ©   (2003-10-31 13:50) [3]

Если я правильно понял, то библиотеку надо выгружать, когда ВСЕ счетчики ссылок станут нулевыми. Стало быть, в ней нужен ГЛОБАЛЬНЫЙ счетчик, который инкрементируется в конструкторе и декрементируется в деструкторе КАЖДОГО класса библиотеки. Если он стал нулевым - библиотека выгружается. Как именно - без разницы, только, конечно, не из нее самой. Например, она может послать сообщение-запрос на свою выгрузку окну или спящему потоку в EXE (cм. PostMessage, PostThreadMessage, WaitForMsgMultipleObjects), или может освободить любой объект синхронизации, который опять-таки ожидается спящим потоком в EXE (соответственно, тот проснется и выгрузит библиотеку).



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
1-41150
LORDIK
2003-11-03 12:07
2003.11.13
Кнопка рядом с ...


1-41536
c13
2003-10-28 07:40
2003.11.13
Система уравнений


3-40965
Bovdur
2003-10-16 09:17
2003.11.13
DBchart и ее свойства


1-41398
KyRo
2003-10-28 22:26
2003.11.13
Как получить Hendle Формы ??


1-41464
E_v_g_e_n_i_y
2003-10-29 08:55
2003.11.13
Операции с файлами




   Наверх