MessageQueues также имеет асинхронный приемник:
MessageQueue mq = new MessageQueue();
mq.ReceiveCompleted += new ReceiveCompletedEventHandler(mq_ReceiveCompleted);
mq.BeginReceive();
Просто убедитесь, что вы снова вызвали BeginReceive () в обработчике, например:
void mq_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
{
mq.BeginReceive();
//do work here
}