MSMQ Thread Safety - PullRequest
       11

MSMQ Thread Safety

1 голос
/ 31 марта 2009

Я работаю с очередями сообщений в c #. Я отправляю сообщения в очередь из кода, вызываемого таймером (установленным в основном потоке), а также из фонового рабочего потока. Если у меня есть два экземпляра очереди сообщений, один для таймера и один для фонового рабочего потока, я столкнусь с какими-либо проблемами потока? У меня возникли проблемы при использовании одного экземпляра очереди сообщений.

1 Ответ

2 голосов
/ 01 апреля 2009

См. MessageQueue на MSDN :

Только следующие методы являются поточно-ориентированными: BeginPeek, BeginReceive, EndPeek (IAsyncResult), EndReceive (IAsyncResult), GetAllMessages, Peek и Receive.

Пока вы придерживаетесь этих методов, вы будете в порядке (плюс любые статические методы, если явно не помечены как не поточно-ориентированные).

Но экземпляры MessageQueue достаточно легкие, поэтому вы можете просто создавать новые экземпляры (возможно, через фабрику, чтобы избежать глобальных переменных для имени очереди), когда это необходимо.

...