private void Initialize () { // Create one bucket per minute _arrBuckets = new ExpiresBucket [60]; byte bytePos = 0; do { _arrBuckets [bytePos] = new ExpiresBucket (bytePos, _objManager); bytePos++; } while (bytePos < 60); // GC Bucket controller _intFlush = System.DateTime.UtcNow.Minute - 1; _objTimer = new System.Threading.Timer (new System.Threading.TimerCallback (GarbageCleanup), null, 10000, 60000); }
internal CacheExpires(CacheInternal cacheInternal) { _cacheInternal = cacheInternal; _buckets = new ExpiresBucket[NUMBUCKETS]; for (byte b = 0; b < _buckets.Length; b++) { _buckets[b] = new ExpiresBucket(this, b); } DateTime utcNow = DateTime.UtcNow; TimeSpan due = _tsPerBucket - (new TimeSpan(utcNow.Ticks % _tsPerBucket.Ticks)); DateTime utcFire = utcNow + due; _iFlush = (int)(((utcFire.Ticks % _tsPerCycle.Ticks) / _tsPerBucket.Ticks) % NUMBUCKETS); #if DBG if (!Debug.IsTagPresent("Timer") || Debug.IsTagEnabled("Timer")) #endif { _timer = new Timer(new TimerCallback(this.TimerCallback), null, due.Ticks / TimeSpan.TicksPerMillisecond, Msec.ONE_MINUTE); } }