Я только начал работать с очередями сообщений, но у моего коллеги есть хороший способ проверить, пуста ли очередь:
if (MessageQueue.Exists(fullQueuePath))
{
// FYI, GetMessageQueue() is a helper method we use to consolidate the code
using (var messageQueue = GetMessageQueue(fullQueuePath))
{
var queueEnum = messageQueue.GetMessageEnumerator2();
if (queueEnum.MoveNext())
{
// Queue not empty
}
else
{
// Queue empty
}
}
}
Преимущество использования этого метода состоит в том, что он не выдает исключение,и я не думаю, что вам нужно ждать, пока истечет время ожидания.