MSMQ: MessageQueue.Close() создает исключение -1073741536 в.EndReceive()
Я использую MSMQ внутри службы Windows.
Когда служба приостановлена, я бы хотел закрыть MSMQ и снова открыть его, когда служба возобновится.
Код выглядит так:
OnStart
_mq.ReceiveCompleted += this.ReceiveCompletedHandler;
_mq.BeginReceive();
OnPause
// MessageQueue.ClearConnectionCache();
_mq.Close();
OnContinue
такой же как 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
MessageQueueErrorCode: -1073741536
Как я могу предотвратить это?
1 ответ
Дэвид,
В вашей OnPause попробуйте сделать это перед вызовом метода Close():
_mq.ReceiveCompleted - = this.ReceiveCompletedHandler;