方法 : メッセージを取得する
更新 : 2007 年 11 月
メッセージの一覧を取得するには、静的な取得機構または動的な取得機構を使用できます。メッセージの静的な一覧を取得する場合、システムはキュー内のすべてのメッセージを表す Message オブジェクトの配列を返します。
メッセージの動的な一覧を取得する場合、システムはキュー内のすべてのメッセージを表す MessageEnumerator オブジェクトを返します。MessageEnumerator オブジェクトはカーソルであり、動的な一覧の先頭に初期化されます。一覧での順序は、メッセージの優先順位に従った、キュー内でのメッセージの順序と同じです。カーソルをキュー内の最初のメッセージに移動するには、MoveNext メソッドを呼び出します。列挙子が初期化された後は、MoveNext を使用して残りのメッセージに順番に移動できます。MoveNext メソッドにタイムアウト値を渡すことにより、メッセージが到着するまで待つかどうかを指定できます。
列挙子は動的であるため、カーソルの現在の位置を越えて追加されたメッセージ (たとえば、優先順位が低いメッセージ) にアクセスできます。列挙子は、カーソルの現在の位置より前に挿入されたメッセージにはアクセスできません。MessageEnumerator では、前のメッセージに戻ることはできません。カーソルは、先への移動だけが可能です。Reset メソッドを使用すると、カーソルをキューの先頭に戻すことができます。
![]() |
---|
DenySharedReceive を true に設定して MessageQueue をインスタンス化した場合は、キューに接続している間、他のアプリケーションは列挙子内のメッセージを変更できません。 |
メッセージの静的な一覧を取得するには
MessageQueue コンポーネントのインスタンスを作成し、その Path プロパティに、参照するキューを設定します。詳細については、「方法 : MessageQueue コンポーネントのインスタンスを作成する」を参照してください。
メモ :
コンポーネントをサーバー エクスプローラから作成した場合、Path プロパティは自動的にキューのキュー パスに設定されます。
照会の結果を格納するために、Message クラスを参照する配列を作成します。
GetAllMessages メソッドを呼び出します。
作成した配列に結果を代入します。
次のコードは、GetAllMessages 関数を使用してキューからメッセージを取得し、メッセージ ラベルをリスト ボックスに表示する方法を示しています。この例では、アプリケーションに MessageQueue コンポーネントのインスタンスが追加されていると仮定しています。
Private Sub button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles button1.Click Me.MessageQueue1.Path = ".\MyQueue" Dim msg() As System.Messaging.Message Dim i As Integer ' Retrieve the messages. msg = MessageQueue1.GetAllMessages() ' Clear the current contents of the list. Me.ListBox1.Items.Clear() ' Display the results. For i = 0 To msg.Length - 1 Me.ListBox1.Items.Add(msg(i).Label) Next End Sub
private void button1_Click(System.Object sender, System.EventArgs e) { messageQueue1.Path = ".\\MyQueue"; System.Messaging.Message[] msg; // Retrieve the messages. msg = messageQueue1.GetAllMessages(); // Clear the current contents of the list. this.listBox1.Items.Clear(); // Display the results. for (int i = 0; i < msg.Length; i++) { this.listBox1.Items.Add(msg[i].Label); } }
このコードの例は、IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [Windows Operating System] の [Message Queues] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。
メッセージの動的な一覧を取得するには
MessageQueue コンポーネントのインスタンスを作成し、その Path プロパティに、参照するキューを設定します。詳細については、「方法 : MessageQueue コンポーネントのインスタンスを作成する」を参照してください。
メモ :
コンポーネントをサーバー エクスプローラから作成した場合、Path プロパティは自動的にキューのキュー パスに設定されます。
照会の結果を格納するために、MessageEnumerator オブジェクトを作成します。
MessageQueue クラスの GetEnumerator メソッドを呼び出します。
結果を MessageEnumerator オブジェクトに代入します。コードは次のようになります。
Dim mq As New System.Messaging.MessageQueue(".\MyQueue") Dim msgEnum As System.Messaging.MessageEnumerator msgEnum = CType(mq.GetMessageEnumerator2, System.Messaging.MessageEnumerator)
System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(); System.Messaging.MessageEnumerator msgEnum; mq.Path = @".\MyQueue"; msgEnum = (System.Messaging.MessageEnumerator)(mq.GetMessageEnumerator2());