public void Clean() { var c = new WeakCollection <object>(); object x = new object(); using (NoGCRegion.Enter(1000)) { c.Add(x); c.Add(x); c.Add(x); AddCollectableItems(c, 3); Assert.AreEqual(6, c.AddCountSinceLastClean); Assert.AreEqual(6, c.UnsafeCount); } Helpers.CollectAndWait(); c.Clean(); Assert.AreEqual(0, c.AddCountSinceLastClean); Assert.AreEqual(3, c.UnsafeCount); GC.KeepAlive(x); }