Обработка совместно используемых сборок GAC - PullRequest
0 голосов
/ 31 декабря 2008

Я знаю, что при создании DLL и объявлении элементов как «Shared» (статические в C #) они создаются при первом вызове, а затем эта ссылка на объект остается в качестве единственной ссылки.

Таким образом, объявление свойства разделяемой строки после его установки может быть вызвано снова для получения того же значения. И тогда безопасность потоков является основной проблемой в домене приложения.

Что происходит за пределами домена приложения. Если мы поместим сборку в глобальный кэш приложений (GAC), сколько будет существовать экземпляров?

Например, статическое свойство с именем «MyFileName» в GAC-файле .dll.

Тогда у нас есть два приложения, вызывающие GAC-файл .dll. Сколько экземпляров «MyFileName» будет существовать? Будут ли изменения в MyFileName из одной копии приложения на значение, которое использует приложение два?

1 Ответ

2 голосов
/ 31 декабря 2008

DLL создается в AppDomain, поэтому существует столько разных копий, сколько существует доменов AppDomain. Данные не передаются между доменами приложений. Помещение DLL в GAC просто делает ее доступной для всех в одном месте, это не меняет модель памяти .net.

...