public void ShouldNotExecuteOnGarbageCollectedFilterReferenceWhenNotKeepAlive() { var CompositePresentationEvent = new TestableCompositePresentationEvent <string>(); bool wasCalled = false; var actionEvent = new ActionHelper() { ActionToExecute = () => wasCalled = true }; ExternalFilter filter = new ExternalFilter(); CompositePresentationEvent.Subscribe(actionEvent.Action, ThreadOption.PublisherThread, false, filter.AlwaysTrueFilter); CompositePresentationEvent.Publish("testPayload"); Assert.IsTrue(wasCalled); wasCalled = false; WeakReference filterReference = new WeakReference(filter); filter = null; GC.Collect(); Assert.IsFalse(filterReference.IsAlive); CompositePresentationEvent.Publish("testPayload"); Assert.IsFalse(wasCalled); }
public async Task ShouldNotExecuteOnGarbageCollectedFilterReferenceWhenNotKeepAlive() { var PubSubEvent = new TestablePubSubEvent <string>(); bool wasCalled = false; var actionEvent = new ActionHelper() { ActionToExecute = () => wasCalled = true }; ExternalFilter filter = new ExternalFilter(); PubSubEvent.Subscribe(actionEvent.Action, ThreadOption.PublisherThread, false, filter.AlwaysTrueFilter); PubSubEvent.Publish("testPayload"); Assert.True(wasCalled); wasCalled = false; WeakReference filterReference = new WeakReference(filter); filter = null; await Task.Delay(100); GC.Collect(); Assert.False(filterReference.IsAlive); PubSubEvent.Publish("testPayload"); Assert.False(wasCalled); }
public void ShouldNotExecuteOnGarbageCollectedFilterReferenceWhenNotKeepAlive() { var compositeWpfEvent = new TestableCompositeWpfEvent <string>(); bool wasCalled = false; Action <string> actionEvent = delegate { wasCalled = true; }; ExternalFilter filter = new ExternalFilter(); compositeWpfEvent.Subscribe(actionEvent, ThreadOption.PublisherThread, false, filter.AlwaysTrueFilter); compositeWpfEvent.Publish("testPayload"); Assert.IsTrue(wasCalled); wasCalled = false; WeakReference filterReference = new WeakReference(filter); filter = null; GC.Collect(); Assert.IsFalse(filterReference.IsAlive); compositeWpfEvent.Publish("testPayload"); Assert.IsFalse(wasCalled); }