Пример #1
0
        public async Task InstancedSubscriberReferenceLoss()
        {
            var eventBus = serviceProvider.GetService <IRootEventBus>();

            Action subscribe = () =>
            {
                var subscriber = new InternalSubscriber();
                eventBus.Subscribe(subscriber);
            };

            subscribe();

            Func <Task> test = async() =>
            {
                GC.Collect();

                //subscriber out of scope and collected, should no longer be called

                await eventBus.PublishAsync(new LogMessage("test"));

                await TestHelpers.DelayUntil(() => InternalSubscriber.LastMessage is LogMessage);

                Assert.IsFalse(InternalSubscriber.LastMessage is LogMessage, "Message subscriber was called.");
            };

            await test();
        }
Пример #2
0
        public async Task InstancedSubscriberDefaultConstructor()
        {
            var eventBus   = serviceProvider.GetService <IRootEventBus>();
            var subscriber = new InternalSubscriber();

            eventBus.Subscribe(subscriber);

            await eventBus.PublishAsync <TypedMessage>();

            await TestHelpers.DelayUntil(() => InternalSubscriber.LastMessage is TypedMessage);

            Assert.IsTrue(InternalSubscriber.LastMessage is TypedMessage, "Message subscriber was not called.");
        }