这是一个副本:What is a singleton in C#?
我不认为它是重复的,因为我在这里寻找的是在不使用时释放/处置 Singleto 对象的最佳策略。
如何实现一个单例,以便在所有引用都不使用时释放/处置对象实例?每当任何人想要一个 Singleton 实例时,它都会按需延迟加载。
最佳答案
单例不应该动态处理:一旦创建,它们将一直存在到应用程序生命周期结束。单例意味着它只有一个实例。
即使您的 Singleton 保留了您想要动态释放和重新保留的资源,您也不应该销毁并重新创建 Singleton 实例。这将与模式的通用含义和用法相矛盾,这可能(充其量)导致您的团队出现沟通问题,或者(最坏的情况)导致您的应用程序出现细微错误。
相反,您可以让 Singleton 对象在内部管理该资源:如果它有一段时间未被使用,或者如果它的引用计数下降到 0,则释放它。
您还应该考虑使用工厂来访问该资源。这使您可以更自由地控制相关资源的处理。您还可以在内部重用创建的对象,实际上将对象计数保持在最多 1 个。
关于c# - 如何管理单例实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279345/