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;
}