次の方法で共有


方法 : キューを取得する

更新 : 2007 年 11 月

キューの一覧を取得するには、静的な取得機構または動的な取得機構を使用します。キューの静的な一覧を取得する場合、システムは照会の結果を含む MessageQueue オブジェクトを返します。キューの動的な一覧を取得する場合、システムは照会の結果を含む MessageQueueEnumerator オブジェクトを返します。

キュー内での順序に従ってメッセージを返す MessageEnumerator とは異なり、MessageQueueEnumerator はキューを特定の順序では返しません。これは、ネットワーク上のキューに順序が定義されていないためです。つまり、キューは、コンピュータ、ラベル、およびその他のユーザーがアクセスできる基準によっては順序付けられていません。カーソルを列挙内の最初のキューに移動するには、MoveNext メソッドを呼び出します。列挙子が初期化された後は、MoveNext を使用して残りのキューに順番に移動できます。

MessageQueueEnumerator では、前のメッセージに戻ることはできません。カーソルは、キューの列挙内で先への移動だけが可能です。ただし、Reset メソッドを呼び出すことにより、列挙をリセットし、カーソルを再び一覧の先頭に配置できます。列挙子は動的であるため、カーソルの現在の位置を越えて追加されたキューにアクセスできます。カーソルの現在の位置よりも前に挿入されたキューにアクセスするには、最初に Reset を呼び出す必要があります。

GetPublicQueuesGetPrivateQueuesByMachine、および GetMessageQueueEnumerator の各メソッドは静的なので、メソッドを呼び出す前に MessageQueue クラスのインスタンスを作成する必要はありません。

パブリック キューまたはプライベート キューの静的な一覧を取得するには

  1. 照会の結果を格納する MessageQueue 型の配列を作成します。

  2. MessageQueue クラスの適切なメソッドを呼び出します。

    • 条件を指定せずにすべてのパブリック キューを取得するには、GetPublicQueues メソッドを呼び出します。

    • 条件を指定してパブリック キューを取得するには、Criteria パラメータを適切な値に設定し、GetPrivateQueuesByMachine メソッドを呼び出します。

    • 共通のカテゴリ GUID を持つパブリック キューだけを取得するには、GetPublicQueuesByCategory メソッドを呼び出し、パラメータにカテゴリ GUID を指定します。

    • 共通のラベルを持つパブリック キューだけを取得するには、GetPublicQueuesByLabel メソッドを呼び出し、パラメータにラベルを指定します。

    • 特定のマシン上のパブリック キューだけを取得するには、GetPublicQueuesByMachine メソッドを呼び出し、パラメータにマシン名を指定します。

  3. 結果を配列に代入します。

    ローカル マシン上のすべてのパブリック キューを取得し、そのラベルをリスト ボックスに表示する例を次のコードに示します。

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Dim mqlist() As System.Messaging.MessageQueue
        Dim i As Integer
        ' Retrieve queues on the local machine.
        mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(".")
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To mqlist.Length - 1
            Me.ListBox1.Items.Add(mqlist(i).Path)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            System.Messaging.MessageQueue[] mqlist;
            // Retrieve public queues.
            mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(
               ".");
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < mqlist.Length; i++)
            {
                this.listBox1.Items.Add(mqlist[i].Path);
            }
        }
    

    このコードの例は、Visual Basic IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [Windows Operating System] の [Message Queues] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。

キューの動的な一覧を取得するには

  1. 照会の結果を格納するために、MessageQueueEnumerator オブジェクトを作成します。

  2. MessageQueue クラスの GetMessageQueueEnumerator メソッドを呼び出します。

  3. ネットワーク上のキューのサブセットを取得する場合は、MessageQueueCriteria パラメータを適切な値に設定します。

  4. 作成した MessageQueueEnumerator オブジェクトに結果を代入します。コードは次のようになります。

    Dim mqEnum As System.Messaging.MessageQueueEnumerator
    mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
    
         System.Messaging.MessageQueueEnumerator mqEnum;
            mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();
    

参照

処理手順

方法 : メッセージを取得する

概念

キューおよびメッセージのコレクション