public void Remove()
        {
            var valueCollected = new booleanWrapper();
            var keyCollected   = new booleanWrapper();

            var dict = new WeakReferenceDictionary <VisiblyGarbageCollectedObject, VisiblyGarbageCollectedObject>(ReferenceEqualityComparer.Instance);

            addKeyAndValueWrappersToDict();

            GC.Collect();             // collects the key
            dict.Clean();             // removes the last reference to the value
            waitForGC();

            Assert.IsTrue(keyCollected);
            Assert.IsFalse(valueCollected);

            GC.Collect();             // collects the value
            waitForGC();

            Assert.IsTrue(valueCollected);

            void addKeyAndValueWrappersToDict()
            {
                dict.Add(VisiblyGarbageCollectedObject.Create(keyCollected), VisiblyGarbageCollectedObject.Create(valueCollected));
            }
        }
Esempio n. 2
0
 static PooledObjectLocator()
 {
     ObjectPool            = new WeakReferenceDictionary();
     destroyTimer          = new Timer();
     destroyTimer.Interval = 60000;
     destroyTimer.Elapsed += new ElapsedEventHandler(Destroy);
     destroyTimer.Start();
 }
 static PooledInstanceLocator()
 {
     ServiceInstancePool = new WeakReferenceDictionary();
 }
Esempio n. 4
0
 static PooledInstanceLocator()
 {
     ServiceInstancePool = new WeakReferenceDictionary();
 }