c#.net中跨应用程序的Singleton对象

本文关键字:Singleton 对象 应用程序 net | 更新日期: 2023-09-27 18:30:12

我知道什么是singleton模式,如何创建它,以及如何使用锁定和双重检查使其线程安全,但是all我想知道"让我们考虑一个场景,我有一个.dll,它有一个单独的类。现在有两个应用程序正在使用.dll并访问单独的类对象。"因此,singleton模式在应用程序范围内提供单个对象,或者跨应用程序工作。如果它不能跨应用程序工作,那么如何在不使用任何WCF或Web服务的情况下创建应用程序范围的单例对象。基本上,我希望一个类对象应该跨应用程序访问。应该是相同的,使用MarshalByRef或其他东西

c#.net中跨应用程序的Singleton对象

您不能单独使用语言功能来创建跨应用程序域的单例对象实例,更不用说进程了。所以,不…你要求做的事情实际上是不可能的

似乎您也特别排除了各种远程处理API,所以您必须在较低的抽象级别实现它。即显式管理的进程间通信,例如命名管道或套接字。

我会尽量避免有这样的要求。但是,假设您有一些真正需要作为单例处理的单机器范围的资源,IMHO最好的方法是创建一个始终运行的服务,该服务提供程序的所有运行实例应该共享的任何资源。

最后请注意,可以轻松地确保您的程序只有一个实例(对于给定的用户登录会话或机器范围,具体取决于实现)。通常的方法是使用一个命名的互斥体,您的程序将在初始化时创建/检查该互斥体,如果程序的其他实例已经创建了它,则新实例将退出。有关详细信息,请参阅如何将程序限制为单个实例。