方法 : キューを取得する
更新 : 2007 年 11 月
キューの一覧を取得するには、静的な取得機構または動的な取得機構を使用します。キューの静的な一覧を取得する場合、システムは照会の結果を含む MessageQueue オブジェクトを返します。キューの動的な一覧を取得する場合、システムは照会の結果を含む MessageQueueEnumerator オブジェクトを返します。
キュー内での順序に従ってメッセージを返す MessageEnumerator とは異なり、MessageQueueEnumerator はキューを特定の順序では返しません。これは、ネットワーク上のキューに順序が定義されていないためです。つまり、キューは、コンピュータ、ラベル、およびその他のユーザーがアクセスできる基準によっては順序付けられていません。カーソルを列挙内の最初のキューに移動するには、MoveNext メソッドを呼び出します。列挙子が初期化された後は、MoveNext を使用して残りのキューに順番に移動できます。
MessageQueueEnumerator では、前のメッセージに戻ることはできません。カーソルは、キューの列挙内で先への移動だけが可能です。ただし、Reset メソッドを呼び出すことにより、列挙をリセットし、カーソルを再び一覧の先頭に配置できます。列挙子は動的であるため、カーソルの現在の位置を越えて追加されたキューにアクセスできます。カーソルの現在の位置よりも前に挿入されたキューにアクセスするには、最初に Reset を呼び出す必要があります。
GetPublicQueues、GetPrivateQueuesByMachine、および GetMessageQueueEnumerator の各メソッドは静的なので、メソッドを呼び出す前に MessageQueue クラスのインスタンスを作成する必要はありません。
パブリック キューまたはプライベート キューの静的な一覧を取得するには
照会の結果を格納する MessageQueue 型の配列を作成します。
MessageQueue クラスの適切なメソッドを呼び出します。
条件を指定せずにすべてのパブリック キューを取得するには、GetPublicQueues メソッドを呼び出します。
条件を指定してパブリック キューを取得するには、Criteria パラメータを適切な値に設定し、GetPrivateQueuesByMachine メソッドを呼び出します。
共通のカテゴリ GUID を持つパブリック キューだけを取得するには、GetPublicQueuesByCategory メソッドを呼び出し、パラメータにカテゴリ GUID を指定します。
共通のラベルを持つパブリック キューだけを取得するには、GetPublicQueuesByLabel メソッドを呼び出し、パラメータにラベルを指定します。
特定のマシン上のパブリック キューだけを取得するには、GetPublicQueuesByMachine メソッドを呼び出し、パラメータにマシン名を指定します。
結果を配列に代入します。
ローカル マシン上のすべてのパブリック キューを取得し、そのラベルをリスト ボックスに表示する例を次のコードに示します。
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)」を参照してください。
キューの動的な一覧を取得するには
照会の結果を格納するために、MessageQueueEnumerator オブジェクトを作成します。
MessageQueue クラスの GetMessageQueueEnumerator メソッドを呼び出します。
ネットワーク上のキューのサブセットを取得する場合は、MessageQueueCriteria パラメータを適切な値に設定します。
作成した MessageQueueEnumerator オブジェクトに結果を代入します。コードは次のようになります。
Dim mqEnum As System.Messaging.MessageQueueEnumerator mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
System.Messaging.MessageQueueEnumerator mqEnum; mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();