using System;
using System.Collections.Generic;
using System.Linq;
namespace Masuit.Tools.Systems;
///
/// 值可被Dispose的字典类型
///
///
///
public class DisposableConcurrentDictionary : NullableConcurrentDictionary, IDisposable where TValue : IDisposable
{
private bool _isDisposed;
///
/// 终结器
///
~DisposableConcurrentDictionary()
{
Dispose(false);
}
public DisposableConcurrentDictionary() : base()
{
}
public DisposableConcurrentDictionary(TValue fallbackValue) : base()
{
FallbackValue = fallbackValue;
}
public DisposableConcurrentDictionary(int concurrencyLevel, int capacity) : base(concurrencyLevel, capacity)
{
}
public DisposableConcurrentDictionary(IEqualityComparer> comparer) : base(comparer)
{
}
///
///
///
public void Dispose()
{
if (_isDisposed)
{
return;
}
Dispose(true);
_isDisposed = true;
GC.SuppressFinalize(this);
}
///
/// 释放
///
///
public void Dispose(bool disposing)
{
foreach (var s in Values.Where(v => v != null))
{
s.Dispose();
}
}
}