有什么方法可以检查公共 MSMQ 是否为空?对于私有 MSMQ,这很容易:
private bool IsQueueEmpty(string path)
{
bool isQueueEmpty = false;
var myQueue = new MessageQueue(path);
try
{
myQueue.Peek(new TimeSpan(0));
isQueueEmpty = false;
}
catch (MessageQueueException e)
{
if (e.MessageQueueErrorCode == MessageQueueErrorCode.IOTimeout)
{
isQueueEmpty = true;
}
}
return isQueueEmpty;
}
我将如何对公共 MSMQ 进行相同的检查?如果我尝试使用上面的代码检查公共 MSMQ,则会在 Peak 上出现错误:
System.ArgumentOutOfRangeException:长度不能小于零。