If you do this in C #, the Queue<T> class should work:
Queue<Message> queue = GetMessageQueue(); while(queue.Count > 0) { Message message = queue.Dequeue();
If you plan to fill a queue of multiple threads, you can use ConcurrentQueue<T> (or BlockingCollection<T> ) instead.
If you use the MessageQueue class for MSMQ, you can always use:
MessageQueue queue = ... TimeSpan timeout = TimeSpan.FromMilliseconds(100); // Small timeout - can be very small Message message = queue.Receive(timeout); while (message != null) { // Process message... message = queue.Receive(timeout); }
source share