次の方法で共有


MessageQueue.Receive メソッド (MessageQueueTransactionType)

MessageQueue で参照されるキューで利用できる最初のメッセージを受信します。この呼び出しは同期呼び出しであるため、メッセージが利用可能になるまで、現在のスレッドの実行をブロックします。

Overloads Public Function Receive( _
   ByVal transactionType As MessageQueueTransactionType _) As Message
[C#]
public Message Receive(MessageQueueTransactionTypetransactionType);
[C++]
public: Message* Receive(MessageQueueTransactionTypetransactionType);
[JScript]
public function Receive(
   transactionType : MessageQueueTransactionType) : Message;

パラメータ

  • transactionType
    メッセージと関連付けるトランザクション コンテキストの種類を示す、 MessageQueueTransactionType 値の 1 つ。

戻り値

キューで利用できる最初のメッセージを参照する Message

例外

例外の種類 条件
MessageQueueException メッセージ キューの API にアクセスしたときにエラーが発生しました。
InvalidEnumArgumentException transactionType パラメータが、 MessageQueueTransactionType メンバの値ではありません。

解説

このオーバーロードを使用すると、 transactionType パラメータで定義されたトランザクション コンテキストを使用してキューからメッセージを受信したり、キューにメッセージが到達したりするまで待機できます。

既に、メッセージの受信に使用するスレッドに結び付けられた外部トランザクション コンテキストがある場合は、 transactionType パラメータに Automatic を指定します。メッセージを単一の内部トランザクションとして受信する場合は、 Single を指定します。トランザクション コンテキスト外部のトランザクション キューからメッセージを受信する場合は、 None を指定します。

Receive メソッドを使用すると、メッセージを同期的に読み取ることができるため、キューから削除できます。後続の Receive 呼び出しは、キューにある次のメッセージを返します。

このメソッドは、トランザクション キューからメッセージを受信するために呼び出され、トランザクションが中止されると、受信したメッセージがキューに戻されます。メッセージは、トランザクションがコミットされるまで、キューから恒久的に削除されることはありません。

キューにある最初のメッセージをキューから削除せずに読み取るには、 Peek メソッドを使用します。 Peek メソッドは、常にキューの最初のメッセージを返します。そのため、より優先順位の高いメッセージがそのキューに到達するまで、後続の呼び出しでも同じメッセージが返されます。 Peek の呼び出しによって返されるメッセージに関連付けられたトランザクション コンテキストはありません。 Peek はキューのメッセージを削除しないため、 Abort を呼び出しても何もロールバックされません。

メッセージのキューへの到達を待機している間に、現在のスレッドがブロックされてもいい場合は、 Receive を呼び出します。この Receive メソッドのオーバーロードは無期限のタイムアウトを指定するため、アプリケーションが無限に待機する可能性があります。メッセージを待機せずにアプリケーションの処理を継続する必要がある場合は、非同期メソッド BeginReceive を使用します。

このメソッドが各種のワークグループ モードで使用できるかどうかを次の表に示します。

ワークグループ モード 使用可否
ローカル コンピュータ はい
ローカル コンピュータ + 直接書式名 はい
リモート コンピュータ いいえ
リモート コンピュータ + 直接書式名 はい

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

MessageQueue クラス | MessageQueue メンバ | System.Messaging 名前空間 | MessageQueue.Receive オーバーロードの一覧 | MessageQueueTransactionType | Transactional | ReceiveById | ReceiveByCorrelationId | Peek | BeginReceive