jjzjj

Singleton

全部标签

c# - 为什么 C# 6.0 中的单例实现不需要 beforefieldinit 标志?

我试图理解为什么这是单例模式的正确实现:publicsealedclassSingleton:ISingleton{publicstaticSingletonInstance{get;}=newSingleton();privateSingleton(){}//methods}beforefieldinit标志怎么样?根据JonSkeetarticle:Thelazinessoftypeinitializersisonlyguaranteedby.NETwhenthetypeisn'tmarkedwithaspecialflagcalledbeforefieldinit.Unfortu

C# 单例线程安全

我有一个类似这样的单例类publicclassSingleton{privatestaticSingletonm_instance;privateTimerm_timer;privatestaticListm_cacheObjects;privateSingleton(){m_cacheObjects=newList();m_timer=newTimer(MyTimerCallBack,null,TimeSpan.FromSeconds(60),TimeSpan.FromSeconds(60));}publicstaticSingletonInstance{get{if(m_insta

c# - 使用自动属性实现单例是个好主意吗?

我最近发现了自动属性并且非常喜欢它们。此时此刻,我正试图在任何可能的地方使用它们。不仅仅是为了能够在任何地方使用它们,而是更多地了解它们在大多数情况下的工作情况。现在我正在制作一个单例并想:“嘿,让我们在这里也试试自动属性”。publicclassMySingleton{publicstaticMySingletonMySingleton{get;privateset;}privateMySingleton(){}staticMySingleton(){MySingleton=newMySingleton();}}所以我的问题是:“像这样实现单例是个好主意吗?”我不是在问一般情况下单例

c# - 奇怪的系统.__佳能异常(exception)

我有一个使用单例类的Windows服务ThreadQueue.当服务启动时,它会调用ThreadQueue.Start()然后,此类接受任务并将其排队,将并发性限制为可配置的线程数。ThreadQueue.Start()在服务启动时被调用一次。有时,服务运行几个小时后,我会收到以下异常:Application:myservice.exeFrameworkVersion:v4.0.30319Description:Theprocesswasterminatedduetoanunhandledexception.ExceptionInfo:System.NullReferenceExcep

C# WPF 如何强制执行 Windows 的单个实例

我想知道在WPF中为每个应用程序拥有一个给定窗口的单个实例的最佳方式(读起来最优雅)是什么。我是.NET和WPF的新手,我的想法看起来很蹩脚。privatestaticreadonlyObjectMUTEX=newObject();privatestaticAboutWindowINSTANCE;publicstaticAboutWindowGetOrCreate(){lock(MUTEX){if(INSTANCE==null){INSTANCE=newAboutWindow();}INSTANCE.Show();returnINSTANCE;}}privateAboutWindow(

c# - 是否可以在接口(interface)中包装 C# 单例?

我目前有一个类,其中我只有静态成员和常量,但是我想用包装在接口(interface)中的单例替换它。但是我该如何做到这一点,记住我见过的每个单例实现都有一个静态实例方法,从而违反了接口(interface)规则? 最佳答案 要考虑的一个解决方案(而不是自己动手)是利用IoC容器,例如Unity.IoC容器通常支持针对接口(interface)注册实例。这提供了您的单例行为,因为根据接口(interface)解析的客户端将收到单例。//Registerinstanceatsomestartingpointinyourapplicati

c# - 单元测试单例

我有一个包含对统计对象的引用的单例。当我在使用该单例的程序上运行几个单元测试时-测试之间保持的值。我虽然在执行Program.Main()时它会在单元测试之间重新开始,但不知何故它会记住上次测试的结果。我如何编写相互隔离的单元测试(我不想要clean()函数-我希望它从新的“一切”开始), 最佳答案 简短版本:不要把你的单例写成单例。将它们编写为普通类,并通过控制反转容器调用它们,您已将类配置为单例。这样,您就可以很好地对类进行单元测试,如果您今天或明天决定单例不是该类的正确生活方式,只需修改IoC容器的配置即可。

c# - Web 应用程序中的单例模式

我在我的网络应用程序中为数据上下文使用单例模式,这样我就不必每次都实例化它,但是我不确定网络应用程序是如何工作的,IIS是否为每个连接的用户打开一个线程?如果是这样,如果我的单例不是线程安全的,会发生什么?另外,可以为数据上下文使用单例模式吗?谢谢。 最佳答案 I'musingasingletonpatternforthedatacontextinmywebapplication在这种情况下,“单例”可能意味着许多不同的事情。它是每个请求的单个实例吗?每节课?每个线程?每个AppDomain(static实例)?所有这些的含义截然不

c# - 调试和发布版本中的静态字段初始化

我发现静态字段初始化的行为可能不同。对于以下代码,publicclassClass1{publicstaticvoidMain(){Console.WriteLine("Main");Test();Console.ReadLine();}publicstaticvoidTest(){Console.WriteLine("Test");Singleton.Instance.DoSomething();}}publicclassSingleton{privatestaticSingletonsInstance=newSingleton();protectedSingleton(){Cons

c# - DLL 中的单例类可以跨进程共享吗?

我正在创建一个自定义的.net硬件框架,其他程序员将使用它来控制某些硬件。他们将添加对我们的DLL的引用以访问我们的硬件框架。我需要一个可以从多个应用程序(进程)访问的共享类。单例模式似乎是我所需要的,但它只适用于进程内的多个线程。我可能完全错了,但这是我目前拥有的C#代码的示例。我不禁觉得设计不正确。我希望我可以分享更具体的信息,但我不能。我必须强调,我无法控制客户的申请。解决方案必须包含在框架(DLL)本身中。框架:(共享DLL)publicclassResources{staticreadonlyResourcesm_instance=newResources();publics