我知道在创建DLL并将项目声明为“共享”(C#中的静态)时,它们在首次调用时被实例化,然后该对象引用作为单个引用存在。
因此,可以再次调用声明一次设置的共享字符串属性以检索相同的值。然后,线程安全是应用程序域中的主要问题。
在应用程序域之外会发生什么。如果我们将程序集放在全局应用程序缓存(GAC)中,将存在多少个实例?
例如,在GAC的.dll中称为“MyFileName”的静态属性。
然后我们有两个应用程序调用GAC'ed .dll。将存在多少个“MyFileName”实例?将来自应用程序的MyFileName的更改复制到Application Two使用的值吗?
答案 0 :(得分:2)
dll在AppDomain中实例化,因此存在与AppDomain一样多的不同副本。数据不会在AppDomains之间传输。将DLL放入GAC只是让它可以在一个地方使用它,它不会改变.net的内存模型。