public void Send(IMessage[] messages)
 {
     IMessageSerializer serializer = new FormatterMessagesSerializer(new BinaryFormatter());
     Message toSend = new Message();
     serializer.Serialize(messages, toSend.BodyStream);
     Queue.Send(toSend);
 }
        protected IList<IMessage> ReceiveFromQueue(int timeoutMilliseconds)
        {
            IList<IMessage> result = null;
            Message msmqMessage = null;

            if (Timeout.Infinite == timeoutMilliseconds)
            {
                msmqMessage = Queue.Receive();
            }
            else
            {
                try
                {
                    msmqMessage = Queue.Receive(TimeSpan.FromMilliseconds(timeoutMilliseconds));
                }
                catch (MessageQueueException ex)
                {
                    switch (ex.MessageQueueErrorCode)
                    {
                        case MessageQueueErrorCode.QueueDeleted:
                            {
                                Queue.Close(); break;
                            }
                        case MessageQueueErrorCode.IOTimeout:
                            {
                                //Logger.Info("StarvationTimeSpan passed.");
                                break;
                            }
                        default:
                            {
                                throw;
                            }
                    }
                }
            }

            if (msmqMessage != null)
            {
                IMessageSerializer serializer = new FormatterMessagesSerializer(new BinaryFormatter());
                IList<IMessage> messages = serializer.Deserialize(msmqMessage.BodyStream);
                result = messages;
            }
            return result;
        }