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;

Другие вопросы по тегам