c# - 如何管理单例实例?

标签 c# singleton

这是一个副本:What is a singleton in C#?

我不认为它是重复的,因为我在这里寻找的是在不使用时释放/处置 Singleto 对象的最佳策略。

如何实现一个单例,以便在所有引用都不使用时释放/处置对象实例?每当任何人想要一个 Singleton 实例时,它都会按需延迟加载。

最佳答案

单例不应该动态处理:一旦创建,它们将一直存在到应用程序生命周期结束。单例意味着它只有一个实例。

即使您的 Singleton 保留了您想要动态释放和重新保留的资源,您也不应该销毁并重新创建 Singleton 实例。这将与模式的通用含义和用法相矛盾,这可能(充其量)导致您的团队出现沟通问题,或者(最坏的情况)导致您的应用程序出现细微错误。

相反,您可以让 Singleton 对象在内部管理该资源:如果它有一段时间未被使用,或者如果它的引用计数下降到 0,则释放它。

您还应该考虑使用工厂来访问该资源。这使您可以更自由地控制相关资源的处理。您还可以在内部重用创建的对象,实际上将对象计数保持在最多 1 个。

关于c# - 如何管理单例实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279345/

相关文章:

c# - RenderTargetBitmap 模糊

c# - 确定由一个平面切割的网格,由 3 个顶点组成

c# - SQL Server和C#数据表中的列名可以使用特殊字符吗

c# - 使用 Html Agility Pack 在两个 HTML 标签之间获取内容

c++ - 如何使用 DLL 在应用程序中实现单例

java - 如何在单例类中实现Map?

c# - 在 C# 中的 Web 服务上填充任何元素

ios - 修复 ARC 中潜在的内存泄漏

PHP:保留静态方法并保持可测试性

c++ - 关于C++单例类的使用