我有一个构建器类,它创建一个实现IDisposable的实例。每当要构建的项目已经在缓存中时,构建器将返回该实例。我的问题是,缓存是否会在它们被驱逐时对其包含的IDisposable项调用Dispose()方法,还是必须在回调CacheItemPolicy.RemovedCallback上显式编码该行为?
答案 0 :(得分:9)
未调用Dispose
。它很容易测试。
public class TestClass : IDisposable
{
public void Dispose()
{
Console.WriteLine("disposed");
}
}
MemoryCache _MemoryCache = new MemoryCache("TEST");
void Test()
{
_MemoryCache.Add("key",
new TestClass(),
new CacheItemPolicy()
{
AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10),
RemovedCallback = (_) => { Console.WriteLine("removed"); }
});
}