コード例 #1
0
        public static void DisableSubscriber()
        {
            var testHub = new MessagesHub();

            int counter = 0;

            DefaultTestMessage.Subscribe(value =>
            {
                counter += value;
            }, null, testHub);


            var subscription2 = DefaultTestMessage.Subscribe(value =>
            {
                counter += value;
            }, null, testHub);

            DefaultTestMessage.Broadcast(1, testHub);
            Assert.AreEqual(counter, 2);

            subscription2.Enabled = false;

            DefaultTestMessage.Broadcast(1, testHub);
            Assert.AreEqual(counter, 3);

            subscription2.Enabled = true;

            DefaultTestMessage.Broadcast(1, testHub);
            Assert.AreEqual(counter, 5);
        }
コード例 #2
0
        public static void SubscribeUnsubscribe()
        {
            var testHub = new MessagesHub();

            int counter = 0;

            int testValue = 10;

            using (var subscription = DefaultTestMessage.Subscribe(value =>
            {
                counter = value;
            }, null, testHub))
            {
                DefaultTestMessage.Broadcast(testValue, testHub);

                Assert.AreEqual(counter, testValue);

                DefaultTestMessage.Broadcast(0, testHub);

                Assert.AreEqual(counter, 0);
            }

            DefaultTestMessage.Broadcast(testValue, testHub);

            Assert.AreEqual(counter, 0);
        }
コード例 #3
0
        public static void UnsubscribeWithinHandler()
        {
            var testHub = new MessagesHub();

            int counter = 0;

            ISubscription subscription2 = null;

            var subscription1 = DefaultTestMessage.Subscribe(value =>
            {
                counter += value;

                subscription2.Dispose();
            }, null, testHub);


            subscription2 = DefaultTestMessage.Subscribe(value =>
            {
                counter += value;

                subscription1.Dispose();
            }, null, testHub);


            DefaultTestMessage.Subscribe(value =>
            {
                counter += value;
            }, null, testHub);


            DefaultTestMessage.Broadcast(1, testHub);

            Assert.AreEqual(counter, 2);

            DefaultTestMessage.Broadcast(1, testHub);

            Assert.AreEqual(counter, 4);
        }