2013-06-06 16 views
7

IDisposable uygulayan bir örnek oluşturan bir oluşturucu sınıfım var. Oluşturulacak öğe önbellekte zaten olduğunda, oluşturucu bunun yerine bu örneği döndürecektir. Sorum önbellek onlar tahliye ya da ben açıkça geri arama CacheItemPolicy.RemovedCallback o davranışı kod gerekiyor zaman içerdiği ıdisposable öğeleri Dispose() yöntemini çağırır, nedir?System.Runtime.Caching.MemoryCache, tahliye edildiğinde IDisposable öğeleri atar mı?

cevap

8

No Dispose çağrılmaz. Test etmek kolaydır.

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"); } 
         }); 

} 
+0

@RobSiklos bunu test etmeden önce kodu düzeltmek etmeyin. Doğruydu. Lambda kullanmadığım bir parametre gerektirir. Cevabı geri aldım. – I4V

+0

çok çok üzgünüm - bir yazım hatası olduğunu düşündüm – RobSiklos

+0

Bu testi bir birim testi olarak sürdüreceğim, daha sonraki sürümleri bu davranışı değiştirebilir ve bunun değiştiğini belirten bir testi beğeneceksiniz! –

İlgili konular