Вы создаете свой экземпляр очереди сообщений и начинаете смотреть на нее асинхронно:
MessageQueue queue = new MessageQueue( @".\PRIVATE$\Queue" );
queue.BeginPeek( TimeSpan.Infinite, null, OnMessageAdded);
Зарегистрированный обратный вызов вызывается, когда сообщение было добавлено в очередь.Поскольку вы не объяснили, в чем заключается ваша настоящая проблема, я предполагаю, что вы хотите получать информацию о новых сообщениях, добавляемых в очередь:
private void OnMessageAdded( IAsyncResult ar )
{
Message peekedMessage = queue.EndPeek(ar);
//Do whatever you want. Raise a new event, process the message, ...
}
Сообщение не удаляется из очереди.Вы можете использовать сообщение, но оно все еще остается в очереди.Поэтому, если вам не нужно сообщение, вы можете просто позвонить queue.EndPeek(ar);
без использования результата.