MSMQ:MessageQueue.Close() 在 抛出异常 -1073741536 .EndReceive()

本文关键字:抛出异常 -1073741536 EndReceive Close MSMQ MessageQueue | 更新日期: 2023-09-27 18:36:22

我在Windows Service中使用MSMQ.
当服务暂停时,我想关闭 MSMQ 并在服务恢复时重新打开它。

代码如下所示:

启动

_mq.ReceiveCompleted += this.ReceiveCompletedHandler;
_mq.BeginReceive();

暂停时

// MessageQueue.ClearConnectionCache();
_mq.Close();

继续

与启动相同

现在,这有效,但是.Close()ReceiveCompletedHandler中抛出异常后:

private void ReceiveCompletedHandler(object sender, ReceiveCompletedEventArgs e)
{
    Message message = this.mq.EndReceive(e.AsyncResult); // or e.Message
    // do stuff
}

异常详情:

类型: MessageQueueException 消息: null
错误代码: -2147467259
MessageQueueErrorCode: -1073741536

如何防止这种情况发生

MSMQ:MessageQueue.Close() 在 抛出异常 -1073741536 .EndReceive()

David,

在 OnPause 中,尝试在调用 Close() 方法之前执行此操作:

_mq。接收已完成 -= 这个。接收完成处理程序;