protected virtual void OnUpgrade(LinkedListNode <ICacheItem> item) { lock (this) { if (item.List == mItemLink) { ICacheItem data = item.Value; mItemLink.Remove(item); mItemTable.Remove(data.Key); if (UpgradeHandler != null) { UpgradeHandler.Upgrade(data, this); } } } }