C# 带计数器的单例模式:实现与资源释放
下面是一个简单的示例,展示了如何在C#中实现带计数器的单例模式,并在计数器归零时释放资源。
public class SingletonWithCounter
{
private static SingletonWithCounter instance;
private static readonly object lockObject = new object();
private static int counter = 0;
private SingletonWithCounter()
{
// 私有构造函数
}
public static SingletonWithCounter GetInstance()
{
lock (lockObject)
{
if (instance == null)
{
instance = new SingletonWithCounter();
}
counter++;
return instance;
}
}
public void ReleaseInstance()
{
lock (lockObject)
{
counter--;
if (counter == 0)
{
// 释放资源的代码
instance = null;
}
}
}
}
在上述示例中,我们使用了一个静态计数器变量'counter'来跟踪当前实例的引用数量。在'GetInstance()'方法中,每次获取实例时,计数器增加1。在'ReleaseInstance()'方法中,每次释放实例时,计数器减少1。当计数器归零时,释放资源的代码将被执行,并将实例设置为'null'。在'GetInstance()'方法中,我们使用了'lock'关键字来确保线程安全。
请注意,这只是一个简单的示例,实际情况可能需要根据具体要求进行调整和改进。
原文地址: https://www.cveoy.top/t/topic/qmhb 著作权归作者所有。请勿转载和采集!