aralık kodlanmış olduğunu ortaya koymaktadır. Son Kullanma kimin statik yapıcı
_tsPerBucket = new TimeSpan(0, 0, 20);
_tsPerBucket
içeren readonly
olan bir iç CacheExpires
sınıf tarafından işlenir, bu nedenle daha sonra değiştirir herhangi bir yapılandırma ayarı var olamaz.
süresi dolan öğeler için onay sonra CacheExpires.EnableExpirationTimer()
yılında kurulduğundan tetikleyecek zamanlayıcı ...
DateTime utcNow = DateTime.UtcNow;
TimeSpan span = _tsPerBucket - new TimeSpan(utcNow.Ticks % _tsPerBucket.Ticks);
this._timer = new Timer(new TimerCallback(this.TimerCallback), null,
span.Ticks/0x2710L, _tsPerBucket.Ticks/0x2710L);
span
hesaplanması sağlayan tam olarak üzerinde zamanlayıcı yangınlar: 00: 20: 40 saniye Ancak rahatsız etmem için bir neden göremiyorum. Zamanlayıcıların çağırdığı yöntem internal
'dur, bu yüzden kendimi daha sık çağırmak için kendi zamanlayıcınızı ayarlamanın bir yolu olduğunu düşünmüyorum (yansıma görmezden geliyor).
Ancak, iyi haber gerçekten aralıkta umurumda için bir neden yok gerektiğidir. Cache.Get()
çekler öğesi süresi dolmamış ve sonra varsa hemen önbellekten öğeyi kaldırır ve null
döndüren. Bu nedenle, son kullanma tarihi geçen parçalar 20 saniye kadar önbellekte kalsa bile, önbellekten süresi dolmuş bir öğe almazsınız.