예제 #1
0
        public void RunEventSource__Delegate()
        {
            IDisposable token      = null;
            var         messageBus = new MessageBus();

            messageBus.InitializeEventSources();
            var resetEvent = new ManualResetEvent(false);
            var target     = new TestEventSource2(resetEvent);

            try
            {
                token = messageBus.RunEventSource(target);
                var report = messageBus.WorkerPool.GetThreadReport();
                report.RegisteredThreads.Count.Should().Be(1);
                var str = report.ToString();
            }
            finally
            {
                token?.Dispose();
                resetEvent.Dispose();
                messageBus.Dispose();
            }
        }
예제 #2
0
        public void RunEventSource_Test2()
        {
            int         sum        = 0;
            IDisposable token      = null;
            var         messageBus = new MessageBus();

            messageBus.InitializeEventSources();
            messageBus.Subscribe <int>(b => b.WithDefaultTopic().Invoke(i => sum += i));
            var resetEvent = new ManualResetEvent(false);
            var target     = new TestEventSource2(resetEvent);

            try
            {
                token = messageBus.RunEventSource(target);
                resetEvent.WaitOne(5000).Should().BeTrue();
                sum.Should().Be(7);
            }
            finally
            {
                token?.Dispose();
                resetEvent.Dispose();
                messageBus.Dispose();
            }
        }