繁体   English   中英

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

[英]Singleton objects across application in c#.net

我知道什么是单例模式,以及如何创建它以及如何使用锁定和双重检查使它成为线程安全,但是我所要知道的是“让我们考虑一个我有一个.dll的类具有单例模式的情况。现在有两个应用程序正在使用.dll并访问单例类对象。” 因此,单例模式可以在整个应用程序范围内提供单个对象,也可以跨应用程序工作。 如果不能在整个应用程序中使用,那么如何在不使用任何WCF或Web服务的情况下创建应用程序范围内的单例对象。 基本上我希望使用MarshalByRef或something可以在整个应用程序中访问一个类对象,该对象应该相同。

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

看来您也特别排除了各种远程API,因此您必须在较低的抽象级别上实现它。 即明确管理的进程间通信,例如命名管道或套接字。

我会尽力避免甚至有这个要求。 但是,假设您有一些真正需要被视为单例的机器范围内的单个资源,恕我直言,解决该问题的最佳方法将是创建一个始终运行的服务,该服务可以提供应该由任何人共享的资源程序中所有正在运行的实例。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM