如何创建一个进程范围的单例对象?

问题描述:

我读过.Net中静态字段的粒度单位是每个AppDomain,而不是每个进程。是否有可能创建一个流程范围的单例对象?如何创建一个进程范围的单例对象?

您必须使用编组呼叫跨AppDomains传递信息。所以你需要在你的父AppDomain中创建状态对象,然后将它传递给任何想要使用它的孩子。如果你不必这样做,你会在AppDomain之间共享内存,这会破坏目的。

在每个AppDomain中,您都可以拥有一个单例,该单例包含对主域中实际单例的引用(编组)。所以你的代码仍然会看起来像“singleton-y”,但是它后面会有一些隐藏的布线。