C# 从消息队列中删除定义数量的消息

C# 从消息队列中删除定义数量的消息,c#,msmq,message-queue,C#,Msmq,Message Queue,除了使用.Purge(),还有什么方法可以从队列中删除已定义数量的消息 我尝试设置一个MessageEnumerator并在对当前消息执行了任何操作后使用.removeCurrent,但它似乎不起作用 谢谢 public Message[] Get10(MessageQueue q) { int counter = 0; int mCount = 0; List<Message> ml = new List<Messag

除了使用
.Purge()
,还有什么方法可以从队列中删除已定义数量的消息

我尝试设置一个
MessageEnumerator
并在对当前消息执行了任何操作后使用
.removeCurrent
,但它似乎不起作用

谢谢

public Message[] Get10(MessageQueue q)
    {

        int counter = 0;
        int mCount = 0;
        List<Message> ml = new List<Message>();
        try
        {
            MessageEnumerator me = q.GetMessageEnumerator2();
            while (me.MoveNext())
            {
                counter++;
            }
            if (counter > 10)
            {
                mCount = 10;
            }
            else
            {
                mCount = counter;
            }
            counter = 0;
            me.Reset();
            do
            {
                me.MoveNext();
                counter++;
                ml.Add(me.Current);
                me.RemoveCurrent();
            } while (counter < mCount);

        }

        catch (Exception x)
        {
            Console.WriteLine(x.Message);
        }
        Message[] m = ml.ToArray();
        return m;
    }
public Message[]Get10(MessageQueue q)
{
int计数器=0;
int mCount=0;
List ml=新列表();
尝试
{
MessageEnumerator me=q.getMessageEnumerator 2();
而(me.MoveNext())
{
计数器++;
}
如果(计数器>10)
{
mCount=10;
}
其他的
{
mCount=计数器;
}
计数器=0;
me.Reset();
做
{
我;
计数器++;
ml.Add(me.Current);
me.RemoveCurrent();
}while(计数器
当您调用
RemoveCurrent()
时,枚举数将移动到下一条消息。调用
RemoveCurrent()
后,不必调用
MoveNext()

您可以尝试的另一种方法如下:

    List<Message> ml = new List<Message>();
    int count = 0;

    while(  count < 10 ) {
        ml.Add(me.RemoveCurrent());
        ++count;
    }

向我们展示一些您尝试过的代码,这样我们可以更好地帮助您。@Theresa Good。请记住,循环将在队列中只有不到10条消息时退出——基本上,最多有10条消息退出队列。如果您想等待队列中至少有10条消息,那么应该查看第一个代码段。
    List<Message> ml = new List<Message>();
    int count = 0;

    while( me.MoveNext() && count < 10 ) {
        ml.Add(queue.ReceiveById(me.Current.Id));
        ++count;
    }