Вопрос

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

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

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

Например, статическое свойство MyFileName в .dll, созданном GAC.

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top