コード例 #1
0
        public async Task PubAndUnSub()
        {
            int count = 0;
            var mq    = new LocalMessageQueue(null);

            mq.Subscribe("topic", msg => { Interlocked.Increment(ref count); });

            int i = 0;

            Task.Factory.StartNew(async() =>
            {
                for (; i < 50; ++i)
                {
                    await mq.PublishAsync("topic", "a");
                    await Task.Delay(100);
                }
            }).ConfigureAwait(false).GetAwaiter();
            await Task.Delay(1500);

            mq.Unsubscribe("topic");

            while (i < 50)
            {
                await Task.Delay(100);
            }

            Assert.True(count < 100);
        }
コード例 #2
0
        public void LocalMessageQueue_UnsubscribeAllRemovesSubscriber()
        {
            var queue      = new LocalMessageQueue <Int32>();
            var subscriber = new MockMessageSubscriber();

            queue.Subscribe(subscriber, 1);
            queue.Unsubscribe(subscriber);
            queue.Publish(1, null);
            queue.Process();

            TheResultingValue(subscriber.ReceivedMessage).ShouldBe(false);
        }