GAC包含组件中共享的处理

时间:2008-12-31 17:58:13

标签: .net thread-safety gac

我知道在创建DLL并将项目声明为“共享”(C#中的静态)时,它们在首次调用时被实例化,然后该对象引用作为单个引用存在。

因此,可以再次调用声明一次设置的共享字符串属性以检索相同的值。然后,线程安全是应用程序域中的主要问题。

在应用程序域之外会发生什么。如果我们将程序集放在全局应用程序缓存(GAC)中,将存在多少个实例?

例如,在GAC的.dll中称为“MyFileName”的静态属性。

然后我们有两个应用程序调用GAC'ed .dll。将存在多少个“MyFileName”实例?将来自应用程序的MyFileName的更改复制到Application Two使用的值吗?

1 个答案:

答案 0 :(得分:2)

dll在AppDomain中实例化,因此存在与AppDomain一样多的不同副本。数据不会在AppDomains之间传输。将DLL放入GAC只是让它可以在一个地方使用它,它不会改变.net的内存模型。