public void ClearParseInformation(FileName fileName) { ParserServiceEntry entry = GetFileEntry(fileName, false); if (entry != null) { entry.ExpireCache(); } }
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(); } }