Почему мой MessageQueue не закрывается должным образом? - PullRequest
1 голос
/ 31 марта 2011

Как я могу остановить синхронное или асинхронное получение из MessageQueue в C #?

Я обнаружил, что если я не получил никаких сообщений из очереди с тех пор, как открыл ее, я могу просто закрыть / удалить очередь, и метод Receive или EndReceive будет исключать, что нормально.Однако, если я уже успешно получил сообщение из очереди, я могу закрыть и утилизировать очередь, но ожидающий или асинхронный прием будет продолжаться независимо!

Я читал в другом месте и нашел некоторые предположения, чтоМне следует установить для EnableConnectionCache значение false, чтобы гарантировать, что очередь сообщений закрывается, когда я спрашиваю, но, тем не менее, она все равно игнорирует меня.

1 Ответ

0 голосов
/ 28 декабря 2012

Как предположил двоичный кодер, я обнаружил, что это всего лишь следствие нетранзакционных очередей. По крайней мере, насколько MSMQ идет. Шаблон Peek> Receive решит проблему, но только при наличии одного читателя. В противном случае, если у вас возникла та же проблема, вам придется использовать транзакционные очереди.

...