代码之家  ›  专栏  ›  技术社区  ›  Mitchel Sellers

GAC包含的组件中的共享处理

  •  0
  • Mitchel Sellers  · 技术社区  · 17 年前

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

    因此,一旦设置了共享字符串属性,就可以再次调用它来检索相同的值。线程安全是应用程序领域内的一个主要问题。

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

    例如,GAC'ed.dll中名为“MyFileName”的静态属性。

    然后我们有两个应用程序调用GAC'ed.dll。将存在多少个“MyFileName”实例?将应用程序一的MyFileName更改为应用程序二使用的值吗?

    1 回复  |  直到 17 年前
        1
  •  2
  •   Robert C. Barth    17 年前

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

    推荐文章