Esempio n. 1
0
        public ICacheItem Get(string key)
        {
            ICacheItem result = null;
            LinkedListNode <ICacheItem> item = null;

            mItemTable.TryGetValue(key, out item);
            if (item != null)
            {
                result = item.Value;
                result.Increment();
                if (LevelValue > 0 && result.Upgrade() && UpgradeHandler != null)
                {
                    OnUpgrade(item);
                }
                else
                {
                    lock (this)
                    {
                        if (item.List == mItemLink)
                        {
                            mItemLink.Remove(item);
                            mItemLink.AddFirst(item);
                        }
                    }
                }
            }
            return(result);
        }