示例#1
0
 private void OnInstanceReleased(Burden burden)
 {
     using (@lock.ForWriting())
     {
         if (instance2Burden.Remove(burden.Instance) == false)
         {
             return;
         }
         burden.Released -= OnInstanceReleased;
     }
     perfCounter.DecrementTrackedInstancesCount();
 }
示例#2
0
 public void Dispose()
 {
     KeyValuePair <object, Burden>[] burdens;
     using (@lock.ForWriting())
     {
         if (trackedComponentsDiagnostic != null)
         {
             trackedComponentsDiagnostic.TrackedInstancesRequested -= trackedComponentsDiagnostic_TrackedInstancesRequested;
             trackedComponentsDiagnostic = null;
         }
         burdens = instance2Burden.ToArray();
         instance2Burden.Clear();
     }
     // NOTE: This is relying on a undocumented behavior that order of items when enumerating Dictionary<> will be oldest --> latest
     foreach (var burden in burdens.Reverse())
     {
         burden.Value.Released -= OnInstanceReleased;
         perfCounter.DecrementTrackedInstancesCount();
         burden.Value.Release();
     }
 }
示例#3
0
 public void DecrementTrackedInstancesCount()
 {
     counter.DecrementTrackedInstancesCount();
 }