static void ValidateAggregationWithComObject() { Console.WriteLine($"Running {nameof(ValidateAggregationWithComObject)}..."); using var allocTracker = MockReferenceTrackerRuntime.CountTrackerObjectAllocations(); var cw = new TestComWrappers(); WeakReference <Derived> weakRef = Derived.AllocateAndUseBaseType(cw, aggregateRefTracker: false); ForceGC(); // Validate all instances were cleaned up Assert.IsFalse(weakRef.TryGetTarget(out _)); Assert.AreEqual(0, allocTracker.GetCount()); }
static void ValidateAggregationWithReferenceTrackerObject() { Console.WriteLine($"Running {nameof(ValidateAggregationWithReferenceTrackerObject)}..."); using var allocTracker = MockReferenceTrackerRuntime.CountTrackerObjectAllocations(); var cw = new TestComWrappers(); WeakReference <Derived> weakRef = Derived.AllocateAndUseBaseType(cw, aggregateRefTracker: true); ForceGC(); // Validate all instances were cleaned up. Assert.IsFalse(weakRef.TryGetTarget(out _)); // Reference counter cleanup requires additional GCs since the Finalizer is used // to clean up the Reference Tracker runtime references. ForceGC(); Assert.AreEqual(0, allocTracker.GetCount()); }