Esempio n. 1
0
        public void ClearParseInformation(FileName fileName)
        {
            ParserServiceEntry entry = GetFileEntry(fileName, false);

            if (entry != null)
            {
                entry.ExpireCache();
            }
        }
Esempio n. 2
0
        internal void RegisterForCacheExpiry(ParserServiceEntry entry)
        {
            // This method should not be called within any locks
            Debug.Assert(!(entry.rwLock.IsReadLockHeld || entry.rwLock.IsUpgradeableReadLockHeld || entry.rwLock.IsWriteLockHeld));
            ParserServiceEntry expiredItem = null;

            lock (cacheExpiryQueue) {
                cacheExpiryQueue.Remove(entry);                 // remove entry from queue if it's already enqueued
                if (cacheExpiryQueue.Count >= cachedEntryCount)
                {
                    // dequeue item at front
                    expiredItem = cacheExpiryQueue[0];
                    cacheExpiryQueue.RemoveAt(0);
                }
                cacheExpiryQueue.Add(entry);                 // add entry to back
            }
            if (expiredItem != null)
            {
                expiredItem.ExpireCache();
            }
        }