Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }