如何创建整个进程范围内的单例对象?
时间:2020-03-05 18:51:50 来源:igfitidea点击:
我读到.Net中静态字段的粒度单位是每个AppDomain的,而不是每个进程的。是否可以创建整个进程范围内的单例对象?
解决方案
回答
我们必须使用编组调用来跨AppDomain交流信息。因此,我们需要在父AppDomain中创建状态对象,然后将其传递给想要使用它的任何子级。如果我们不必这样做,那么我们将在AppDomains之间共享内存,这将达到目的。
在每个AppDomain中,我们可以拥有一个单例,该单例包含对主域中实际单例的(编组)引用的引用。因此,代码仍将看起来像" singleton-y",但在其后面将有一些隐藏的连线。