Hello,
>
> Есть 2 библиотеки. Одна написана на с++. Вторая — на с#. Библиотека с++ импортирует библиотеку с# как СОМ.
> Есть одна проблема: библиотека СОМ не выгружается из памяти не при каких условиях?
>
> Как можно выгрузить СОМ?
Нужно освобождать все ссылки. В COM это делается через Release, а в .NET полезно вызывать Marshal.ReleaseComObject
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, oleg123, Вы писали:
TK>>Нужно освобождать все ссылки. В COM это делается через Release, а в .NET полезно вызывать Marshal.ReleaseComObject
O>Дело в том, что я делаю Release, но библиотека СОМ все равно висит в памяти. Выгружается только после перезагрузки компьютера.
Да, есть такое дело. Тоже сталкнулся и ничего не понимаю. Выгрузить com объект можно, только через спец. программу, например я пользуюсь "process view". Остальные пишут доступ запрещен и все тут. Может кто нибудь объясинт в чем фикус ?!

... << Rsdn@Home 1.1.4 beta 1 >>
А>Как можно выгрузить СОМ?
Если я правильно понял, то ты очень хочешь выгрузить C#-библиотеку из "приплюснутого" приложения.
В этом случае можно срубить домен, AppDomain.Unload. Правда при таких раскладах произойдёт полная деинициализация всех дотнетовских объектов.
Наверняка, тебе больше подойдёт следующий способ. Дотнетовская среда может грузить библиотеки в режиме Shadow-Copy. При этом она вообще не блокирует файлы DLL на диске, просто считывает, загружает сборку и "отпускает" файл — хоть удаляй, хоть что хочешь.
Чтобы включить такой режим, есть два способа.
1. Unmanged Hosting API. Нужно будет создать или открыть текущий домен, установить для него какие-то функции. Смотри в MSDN и h-файлы вот здесь:
Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include
2. Можно включить эту фишку "из дотнета": AppDomain.SetShadowCopyFiles(). При использовании C++ Managed Extensions это делается легко.
... << Rsdn@Home 1.1.4 beta 1 >>