MessageQueue.Send メソッド (Object, String, MessageQueueTransaction)
この MessageQueue で参照されるトランザクション キューにオブジェクトを送信し、メッセージのラベルを指定します。
Overloads Public Sub Send( _
ByVal obj As Object, _ ByVal label As String, _ ByVal transaction As MessageQueueTransaction _)
[C#]
public void Send(objectobj,stringlabel,MessageQueueTransactiontransaction);
[C++]
public: void Send(Object* obj,String* label,MessageQueueTransaction* transaction);
[JScript]
public function Send(
obj : Object,label : String,transaction : MessageQueueTransaction);
パラメータ
- obj
キューに送信するオブジェクト。 - label
メッセージのラベル。 - transaction
MessageQueueTransaction オブジェクト。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | label パラメータが null 参照 (Visual Basic では Nothing) です。
または transaction パラメータが null 参照 (Nothing) です。 |
MessageQueueException | Path プロパティが設定されていません。
または メッセージ キュー アプリケーションが、トランザクションの使用方法が間違っていることを示しました。 または メッセージ キューの API にアクセスしたときにエラーが発生しました。 |
解説
このオーバーロードを使用すると、 transaction パラメータで定義された内部トランザクション コンテキストを使用して、 obj パラメータを含むメッセージを MessageQueue が参照するトランザクション キューに送信します。このオーバーロードを使用すると、メッセージを識別する文字列ラベルを指定できます。キューに送信するオブジェクトは、 Message 、構造体、データ オブジェクト、または任意のマネージ オブジェクトにすることができます。 Message 以外のオブジェクトを送信した場合、オブジェクトはシリアル化され、メッセージ本文に挿入されます。
メモ メッセージ ラベルはメッセージ キューのラベルと異なりますが、どちらもアプリケーション依存であり、メッセージ キューが継承する意味はありません。
このオーバーロードを使用して非トランザクション キューにメッセージを送信すると、例外がスローされることなく、メッセージが配信不能キューに送信されることがあります。
Send を呼び出す前に Formatter プロパティを設定しないと、書式指定子が既定の XmlMessageFormatter に設定されます。
DefaultPropertiesToSend プロパティは、 Message 以外の任意のオブジェクトに適用されます。たとえば、 DefaultPropertiesToSend メンバを使用してラベルまたは優先順位を指定すると、指定した値は、アプリケーションが Message 以外の型のオブジェクトを含むメッセージをキューに送信するときに、そのメッセージに適用されます。 Message を送信する場合は、 Message に設定したプロパティ値が DefaultPropertiesToSend よりも優先され、このメッセージの Message.Formatter プロパティがキューの MessageQueue.Formatter プロパティよりも優先されます。
[Visual Basic] メモ MessageQueueTransaction がスレッド アパートメントに対応しているため、アパートメントの状態が STA の場合は、複数のスレッドで同じトランザクションを使用できません。Visual Basic はメイン スレッドの状態を STA に設定するため、
Main
サブルーチンで MTAThreadAttribute を適用する必要があります。この処理を行っていない場合は、別のスレッドを使用してトランザクション メッセージを送信すると、 MessageQueueException 例外がスローされます。 MTAThreadAttribute を適用するには、次のコード片を使用します。
<System.MTAThreadAttribute>
public sub Main()
このメソッドが各種のワークグループ モードで使用できるかどうかを次の表に示します。
ワークグループ モード | 使用可否 |
---|---|
ローカル コンピュータ | はい |
ローカル コンピュータ + 直接書式名 | はい |
リモート コンピュータ | いいえ |
リモート コンピュータ + 直接書式名 | はい |
必要条件
プラットフォーム: 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.Send オーバーロードの一覧 | DefaultPropertiesToSend | Message | MessageQueueTransaction | Transactional | Label | Peek | Receive | BeginPeek | BeginReceive