Несколько доменов приложений, вызывающих одну и ту же неуправляемую DLL
Наше приложение.NET 3.5 C# создает несколько доменов приложений. Каждый домен приложения загружает одну и ту же неуправляемую стороннюю DLL. Эта DLL читает файл конфигурации при инициализации. Если конфигурация изменяется во время выполнения, dll должна быть выгружена и загружена снова. Эта DLL не в нашей области, чтобы переписать правильно.
Имеет ли каждый домен приложения доступ к отдельной копии этой неуправляемой библиотеки DLL или Windows сохраняет одну копию библиотеки DLL и поддерживает счет использования? Если последнее имеет место, как мы можем заставить каждый экземпляр неуправляемой DLL отражать ее уникальную конфигурацию?
2 ответа
Взгляни на этот пост в блоге
Я думаю, что неуправляемые dll загружаются ОС только один раз за процесс, поэтому у каждого домена приложения будет один и тот же загруженный экземпляр. Чтобы выгрузить dll, используйте функцию FreeLibrary. Однако, поскольку несколько доменов приложений, вероятно, загрузили dll, нет никакой гарантии, что FreeLibrary из одного домена приложения фактически освободит / выгрузит dll.
Как говорит BillW, это тоже кажется мне кошмаром дизайна!