public override void RemoveHandler(object sender, RemoveEventArgs e) { string key = e.Key; int index = key.IndexOf(DataProvider.Delimiter); if (index > 0) { string processName = key.Substring(0, index); LJBinsTree binTree = DataProvider.CachedKeyDictionary[processName] as LJBinsTree; if (binTree != null) { lock (binTree) { LJTreeNode treeNode = binTree.FindNode( new CacheBinInfo(DataProvider.Delimiter, key), binTree.GetRoot()); if (treeNode != null) { LJTreeNode parNode = treeNode.Parent; binTree.Delete(treeNode.data); while (parNode != null && parNode.Left == null) { LJTreeNode par1Node = parNode.Parent; binTree.Delete(parNode.data); parNode = par1Node; } } } } } }
public void RemoveCacheBinNode(LJBinsTree binTree, LJTreeNode binNode) { if (binNode.Left != null) { RemoveCacheBinNode(binTree, binNode.Left); } else { CacheBinInfo binInfo = binNode.data as CacheBinInfo; if (binInfo != null) { CachingService.Current.Remove(binInfo.CacheKey); } } if (binNode.Right != null) { RemoveCacheBinNode(binTree, binNode.Right); } binTree.Delete(binNode.data); }