各位好,在开发中遇到一个问题,我从消息队列中获取消息的时候用的是下面这个方法:
 me = _mq.GetMessageEnumerator2();
电脑上的私有队列中有N条消息(N>1),当我用上面那个语句获取枚举后。再用下面的方法读取的时候,循环却执行了一次,也就是说,并没有把所有的消息都取出来,仅仅取了一条,很纳闷。以前我用的时候可以把N条消息取出来的呢。
// While循环了1次,按照道理来说,应该要循环N次才对的。
while (me.MoveNext())
{
 me.RemoveCurrent();
}
请各位前辈支招,谢谢了啊

解决方案 »

  1.   


    // While循环了1次,按照道理来说,应该要循环N次才对的。 
    while (me.MoveNext()) 

    me.RemoveCurrent(); 
    } 为什么要
    me.RemoveCurrent(); 
    呢?试试While完了之后,清空吧,不过清空干嘛?用完了就算了
      

  2.   

    // While循环了1次,按照道理来说,应该要循环N次才对的。 
    while (me.MoveNext()) 

    me.RemoveCurrent(); remove了就不能往下走了啊
      

  3.   

    2楼的说法是对的,remove了就不能往下走了。但是我的本意是循环读取,每读取一条处理一条,然后利用RemoveCurrent方法来从队列中移除。因为不移除的话就一直会在消息队列中,那么下次读取的时候还会读到,造成重复处理了。不知2楼的兄弟有何高招?
      

  4.   

    先me.RemoveCurrent(); 然后再处理你的业务逻辑