public void WeakToWeak() { WeakCollectionChangedList list = new WeakCollectionChangedList(); _proxyForWeakToWeakTest = new ListProxy(list); Assert.True(list.AddObject(), "GC hasn't run"); GC.Collect(); GC.WaitForPendingFinalizers(); Assert.IsTrue(list.AddObject(), "GC run, but proxy should still hold a reference"); _proxyForWeakToWeakTest = null; GC.Collect(); GC.WaitForPendingFinalizers(); Assert.IsFalse(list.AddObject(), "Proxy is gone and GC has run"); }
public void WeakToWeak() { WeakCollectionChangedList list = new WeakCollectionChangedList(); var proxy = new ListProxy(list); Assert.True(list.AddObject()); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.IsTrue(list.AddObject()); proxy = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.IsFalse(list.AddObject()); }