示例#1
0
        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;
                            }
                        }
                    }
                }
            }
        }
示例#2
0
 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);
 }