单例是通过不同的应用程序共享的吗?

时间:2010-10-11 07:03:41

标签: c# singleton

我想知道:如果我创建一个带有私有构造函数的单例类和一个静态方法,它将返回此类的实例并将其置于汇编中,如果我从两个不同的应用程序访问此实例会发生什么?

应用程序始终是否共享同一个单例实例?

如果这两个应用程序都从内存中卸载,那么实例也将被释放?

感谢。

4 个答案:

答案 0 :(得分:9)

两个不同的应用程序共享对象,没有。它们当然会共享对象的完全相同的代码,因为它们正在加载相同的程序集,但它们每个都有自己的单个副本,在它们自己的地址空间中。

事实上 - 即使是运行两次的相同应用程序也不会在它们之间共享实际的Singleton实例。

答案 1 :(得分:2)

我不这么认为,如果不做任何事情,每个应用程序空间都会有一个单例。

答案 2 :(得分:2)

Singleton类将基于每个appdomain,所以如果你有多个appdomains加载你的单例类,你可以找到超过1个单例类的实例。

Cross process Singleton没有任何意义,你将有不同的实例

答案 3 :(得分:1)

如果您没有通过将其保存/加载到驱动器或数据库中的相同物理位置来专门使其成为共享单例,则不会。