读取并删除MSMQ中的所有消息(通过RemoveCurrent方法)

时间:2015-08-24 15:21:18

标签: c# .net msmq

我尝试通过GetMessageEnumerator2方法读取来自MSMQ的所有消息,但总是只获取1条消息,而使用GetAllMessages方法,我获取正确数量的消息... < / p>

以下代码中的“bug”在哪里:

//var messages = queue.GetAllMessages(); // HERE I HAVE 5 MESSAGES
var messages = queue.GetMessageEnumerator2();
ReadQueryMessages(messages, removeAfterRead: true);

//...

ReadQueryMessages(MessageEnumerator enumerator, bool removeAfterRead = true)
{
    List<Message> messages = new List<Message>();
    // enumerator.Reset(); - didn't help
    while (enumerator.MoveNext(new TimeSpan(0, 0, 1)))
    {
        messages.Add(enumerator.Current);
        if (removeAfterRead)
            enumerator.RemoveCurrent();
    }
    // process messages - HERE I HAVE ONLY 1 FIRST MESSAGE
}

PS (对于“复制版主”)
我的问题不是要求如何,而是为什么只有一个才能删除

0 个答案:

没有答案