Несколько доменов приложений, вызывающих одну и ту же неуправляемую DLL - PullRequest
4 голосов
/ 25 марта 2010

Наше приложение .NET 3.5 C # создает несколько доменов приложений. Каждый домен приложения загружает одну и ту же неуправляемую стороннюю DLL. Эта DLL читает файл конфигурации при инициализации. Если конфигурация изменяется во время выполнения, dll должна быть выгружена и загружена снова. Эта DLL не в нашей области, чтобы переписать правильно.

Имеет ли каждый домен приложения доступ к отдельной копии этой неуправляемой библиотеки DLL или Windows хранит одну копию библиотеки DLL и поддерживает счет использования? Если это последний случай, как мы можем заставить каждый экземпляр неуправляемой DLL отражать ее уникальную конфигурацию?

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Взгляните на это сообщение в блоге

Объяснение процессов и доменов приложений

0 голосов
/ 25 марта 2010

Я думаю, что неуправляемые dll загружаются ОС только один раз за процесс, поэтому у каждого домена приложения будет один и тот же загруженный экземпляр. Чтобы выгрузить dll, используйте функцию FreeLibrary. Однако, поскольку несколько доменов приложений, вероятно, загрузили DLL, нет никакой гарантии, что FreeLibrary из одного домена приложения действительно освободит / выгружает DLL.

Как говорит BillW, это тоже кажется мне кошмаром дизайна!

...