appdomain загружает одну библиотеку в течение нескольких раз и сохраняет память изолированной - PullRequest
0 голосов
/ 05 сентября 2011

Существует COM DLL (встроенный мастер VC6.0 ATL), я хочу использовать идентификаторы appdomain для реализации одного процесса, создающего несколько приложений, каждый загружает эту COM DLL и гарантирует, что каждая COM DLL имеет изолированное пространство памяти.

Например

AppDomain Domain1 = AppDomain.CreateDomain ("D1"); AppDomain Domain2 = AppDomain.CreateDomain ("D2");

object obj1 = Domain1.CreateInstanceFromAndUnwrap ("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag");

object obj2 = Domain2.CreateInstanceFromAndUnwrap ("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag")

В этой dll есть глобальная переменная, каждый раз, когда она загружается, это ++. хотя com загружается в другой домен приложения, глобальная переменная используется совместно.

почему произошел такой результат? appdomain должен сохранять выделение памяти, но это не удалось.

однако для управляемого dll домен приложения может работать.

помоги мне !!!!!

1 Ответ

0 голосов
/ 08 сентября 2011

Я предлагаю вам загрузить COM-объект в один или несколько процессов хостинга.Это единственный способ дать им тот тип изоляции, который вы ищете.Вы можете свернуть свои собственные, или, возможно, заглянуть в COM +

...