private Message[] PeekMessages(MessageQueue activeQueue, bool blnDynamicConnection, MessageFormat eMessageFormat, System.Type CustomType) { Message objMessage; Message[] arrCurrentMessages = new Message[0]; Message[] arrCopyOfMessages = null; IMessageFormatter objFormatter = null ; MessagePropertyFilter objMessagePropertyFilter = new MessagePropertyFilter(); int intArrayIndex; // Message Formatter switch (eMessageFormat) { case MessageFormat.XMLSerialize: if (CustomType == null) { objFormatter = new XmlMessageFormatter(); } else { // objFormatter = new XmlMessageFormatter(new Type() [CustomType]); } break; case MessageFormat.ActiveXSerialize: objFormatter = new ActiveXMessageFormatter(); break; case MessageFormat.BinarySerialize: objFormatter = new BinaryMessageFormatter(); break; } // Messages in Private Queue // Ensure these properties are received (CorrelationID defaults to False) objMessagePropertyFilter.SetDefaults(); objMessagePropertyFilter.CorrelationId = true; objMessagePropertyFilter.AppSpecific = true; objMessagePropertyFilter.ArrivedTime = true; activeQueue.MessageReadPropertyFilter = objMessagePropertyFilter; // Message Formatter activeQueue.Formatter = objFormatter; // Dynamic Connection whilst gathering messages if (blnDynamicConnection == true) { IEnumerator objMessageEnumerator = activeQueue.GetEnumerator(); intArrayIndex = 0; while (objMessageEnumerator.MoveNext()) { objMessage = (Message) objMessageEnumerator.Current; if (intArrayIndex > 0) { arrCopyOfMessages = new Message[intArrayIndex]; arrCurrentMessages.CopyTo(arrCopyOfMessages,0); arrCurrentMessages=arrCopyOfMessages; } arrCurrentMessages[intArrayIndex] = objMessage; intArrayIndex += 1; } } else // Snapshot of messages currently in Queue { arrCurrentMessages = null ; try { arrCurrentMessages = activeQueue.GetAllMessages(); } catch (System.Messaging.MessageQueueException excM) { throw excM; } } return arrCurrentMessages; }