System.Web.Caching.CacheItemPriorityQueue.Enqueue C# (CSharp) Method

Enqueue() public method

public Enqueue ( System.Web.Caching.CacheItem item ) : void
item System.Web.Caching.CacheItem
return void
		public void Enqueue (CacheItem item)
		{
			if (item == null)
				return;

			CacheItem[] heap;
			
			try {
				queueLock.EnterWriteLock ();
				heap = GetHeapWithGrow ();
				heap [heapCount++] = item;
				BubbleUp (heap);
				
				AddSequenceEntry (item, EDSequenceEntryType.Enqueue);
			} finally {
				// See comment at the top of the file, above queueLock declaration
				queueLock.ExitWriteLock ();
			}
		}

Usage Example

        // MUST be called with cache lock held
        void EnqueueTimedItem(CacheItem item)
        {
            long remaining = Math.Max(0, (long)(item.AbsoluteExpiration - DateTime.Now).TotalMilliseconds);

            item.ExpiresAt = item.AbsoluteExpiration.Ticks;

            if (timedItems == null)
            {
                timedItems = new CacheItemPriorityQueue();
            }

            if (remaining > 4294967294)
            {
                // Maximum due time for timer
                // Item will expire properly anyway, as the timer will be
                // rescheduled for the item's expiration time once that item is
                // bubbled to the top of the priority queue.
                expirationTimerPeriod = 4294967294;
            }
            else
            {
                expirationTimerPeriod = remaining;
            }

            if (expirationTimer == null)
            {
                expirationTimer = new Timer(new TimerCallback(ExpireItems), null, expirationTimerPeriod, expirationTimerPeriod);
            }
            else
            {
                expirationTimer.Change(expirationTimerPeriod, expirationTimerPeriod);
            }

            timedItems.Enqueue(item);
        }
All Usage Examples Of System.Web.Caching.CacheItemPriorityQueue::Enqueue