Dam*_*isa 7 c# performance msmq
我现在这样做:
MessageQueue queue = new MessageQueue(".\Private$\myqueue");
MessageEnumerator messageEnumerator = queue.GetMessageEnumerator2();
int i = 0;
while (messageEnumerator.MoveNext())
{
i++;
}
return i;
Run Code Online (Sandbox Code Playgroud)
但是由于显而易见的原因,它只是感觉不对 - 我不应该遍历每一条消息只是为了得到一个数,我应该吗?
有没有更好的办法?
在 C# 中,答案似乎是否定的 - 您正在做的事情是实现此目的的唯一方法之一,所有其他方法都是类似的。
有多种方法可以使用 WMI 或 COM 来执行此操作 - 查看MSMQManagement com 组件。它有一个 MessageCount 属性。
我发现以下帖子可能会给您一些其他一些更好的纯 C# 实现的想法:
虽然上述内容似乎都是正确的,但我应该注意,我从未尝试过使用 MSMQ 执行此操作 - 我只从队列中执行过标准读取。