public void RemoveHandledHandler(int handlerTypeCode)
            {
                IMessageHandlerProxy handler;

                if (_handlerDict.TryRemove(handlerTypeCode, out handler))
                {
                    if (_handlerDict.IsEmpty)
                    {
                        _parentMessageStream.OnMessageHandled(Message);
                    }
                }
            }
 private void DispatchMessage(IMessage message, DisptachingMessageStream messageStream)
 {
     var handlers = _handlerProvider.GetHandlers(message.GetType());
     if (!handlers.Any())
     {
         messageStream.OnMessageHandled(message);
         return;
     }
     var dispatchingMessage = new DisptachingMessage(message, messageStream, handlers, _typeCodeProvider);
     foreach (var handler in handlers)
     {
         DispatchMessageToHandlerAsync(dispatchingMessage, handler, 0);
     }
 }
        private void DispatchMessage(IMessage message, DisptachingMessageStream messageStream)
        {
            var handlers = _handlerProvider.GetHandlers(message.GetType());

            if (!handlers.Any())
            {
                messageStream.OnMessageHandled(message);
                return;
            }
            var dispatchingMessage = new DisptachingMessage(message, messageStream, handlers, _typeCodeProvider);

            foreach (var handler in handlers)
            {
                DispatchMessageToHandlerAsync(dispatchingMessage, handler, 0);
            }
        }