示例#1
0
 private void DoDispose()
 {
     if (WatcherThread != null)
     {
         WatcherThread.Abort();
     }
     //InternalDict.Values.ToList().ForEach(Value => Value.Dispose());
     foreach (T Value in InternalDict.Values)
     {
         Value.Dispose();
     }
     InternalDict.Clear();
     m_InternalDict = null;
     m_ValueFactory = null;
     GC.SuppressFinalize(this);
 }
示例#2
0
 public void DisposeThreadCompletedValues()
 {
     lock (SyncRoot)
     {
         List <Thread> CompletedThreads;
         CompletedThreads = new List <Thread>();
         foreach (Thread ThreadInstance in InternalDict.Keys)
         {
             if (!ThreadInstance.IsAlive)
             {
                 CompletedThreads.Add(ThreadInstance);
             }
         }
         foreach (Thread ThreadInstance in CompletedThreads)
         {
             InternalDict[ThreadInstance].Dispose();
             InternalDict.Remove(ThreadInstance);
         }
     }
 }
示例#3
0
        public override string this[string key]
        {
            get
            {
                if (InternalDict.ContainsKey(key))
                {
                    return(InternalDict[key]);
                }
                if (Osr is OpenSlide osr)
                {
                    var value = osr.GetPropertyValue(key);
                    InternalDict[key] = value ?? throw new OpenSlideException($"Property {key} was not found.");
                }
                else
                {
                    return(null);
                }

                return(InternalDict[key]);
            }
            set => InternalDict[key] = value;