2009-03-31 10 views
1

私はC#でメッセージキューを扱っています。私は、メインスレッドで設定されたタイマーによって呼び出されたコードから、またバックグラウンドのワーカースレッドから、メッセージをキューに送ります。私は、メッセージキューの2つのインスタンス、タイマー用とバックグラウンドワーカースレッドの場合、私はスレッドの問題に直面するつもりですか?メッセージキューのインスタンスを1つ使用するときに問題が発生しました。MSMQスレッドセーフ

答えて

2

MessageQueue on MSDNを参照してください:

のみ、次のメソッドは、スレッドセーフです:BeginPeek、BeginReceive、EndPeek(たIAsyncResult)、EndReceive(IAsyncResultインター)、GetAllMessages、PEEK、および受信します。

これらのメソッドに固執している限り、スレッドセーフではないと明示的にマークされていない限り、すべての静的メソッドに加えてOKです。

しかし、MessageQueueインスタンスはかなり軽量であるため、必要に応じて新しいインスタンス(ファクトリを使用してキュー名を避けるために)を作成するだけで済みます。

+0

MSDNでBeginPeekおよびBeginReceiveについて言及しているため、スレッドセーフではありません https://msdn.microsoft.com/en-us/library/wzxyx0aa(v=vs.110).aspx – dush88c