0

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

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

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

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

然后我们有两个应用程序调用 GAC 的 .dll。将存在多少个“MyFileName”实例?应用程序一对 MyFileName 的更改是否会复制到应用程序二使用的值?

4

1 回答 1

2

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

于 2008-12-31T20:33:07.377 回答