public void Test_FlushMessages()
        {
            TestMessage msg;
            TestMessage msg1 = new TestMessage();
            TestMessage msg2 = new TestMessage();

            using (DeferredChannelMessageContext outerContext = new DeferredChannelMessageContext())
            {
                outerContext.AddOrUpdateMessage("Channel1", msg1, null);
                outerContext.AddOrUpdateMessage("Channel2", msg2, null);

                Assert.That(outerContext.TryGetMessage("Channel1", out msg), Is.True, "Outer context missing msg");

                Assert.AreSame(msg, msg1);

                Assert.That(outerContext.TryGetMessage("Channel2", out msg), Is.True, "Outer context missing msg");

                Assert.AreSame(msg, msg2);

                outerContext.FlushMessages();

                Assert.That(outerContext.TryGetMessage("Channel1", out msg), Is.False, "Outer context contains msg");
                Assert.That(outerContext.TryGetMessage("Channel2", out msg), Is.False, "Outer context contains msg");
            }
        }
        /// <summary>
        /// Flush any deferred messages.
        /// </summary>
        private void FlushDeferredMessageContextMessages()
        {
            if (!DeferredChannelMessageContext.IsSet())
            {
                return;
            }

            using (DeferredChannelMessageContext messageContext = DeferredChannelMessageContext.GetContext())
            {
                messageContext.FlushMessages();
            }
        }