我在Windows 服务中使用MSMQ 。
当服务暂停时,我想关闭 MSMQ并在服务恢复时重新打开它。
代码如下所示:
启动
_mq.ReceiveCompleted += this.ReceiveCompletedHandler;
_mq.BeginReceive();
暂停
// MessageQueue.ClearConnectionCache();
_mq.Close();
继续
与 OnStart 相同
现在,这可以工作,但是在.Close()
抛出异常之后ReceiveCompletedHandler
:
private void ReceiveCompletedHandler(object sender, ReceiveCompletedEventArgs e)
{
Message message = this.mq.EndReceive(e.AsyncResult); // or e.Message
// do stuff
}
异常详情:
类型:MessageQueueException
消息:null
错误代码:消息-2147467259
队列错误代码:-1073741536
如何防止这种情况发生?