Sdílet prostřednictvím


Gewusst wie: Abrufen von Warteschlangen

Aktualisiert: November 2007

Sie können entweder statische oder dynamische Abrufmechanismen verwenden, um eine Liste mit Warteschlangen abzurufen. Wenn Sie eine statische Liste mit Warteschlangen abrufen, gibt das System ein MessageQueue-Objekt mit den Abfrageergebnissen zurück. Wenn Sie eine dynamische Liste mit Warteschlangen abrufen, gibt das System ein MessageQueueEnumerator-Objekt mit den Abfrageergebnissen zurück.

Im Unterschied zum MessageEnumerator, der Meldungen entsprechend ihrer Reihenfolge in einer Warteschlange zurückgibt, gibt MessageQueueEnumerator Warteschlangen in keiner bestimmten Reihenfolge zurück. Dies liegt daran, dass Warteschlangen in einem Netzwerk nicht in einer bestimmten Reihenfolge definiert sind – d. h. sie sind nicht nach Computer, Bezeichnung oder anderen Kriterien geordnet, auf die der Benutzer zugreifen kann. Sie können den Cursor auf die erste Warteschlange der Enumeration setzen, indem Sie die MoveNext-Methode aufrufen. Nachdem der Enumerator initialisiert wurde, können Sie die verbleibenden Warteschlangen mit MoveNext vorwärts durchgehen.

Es ist nicht möglich, die Meldungen mit dem MessageQueueEnumerator-Objekt rückwärts zu durchlaufen. Der Cursor kann in einer Warteschlangenenumeration nur vorwärts bewegt werden. Allerdings können Sie die Reset-Methode aufrufen, um die Enumeration zurückzusetzen und den Cursor wieder an den Anfang der Liste zu setzen. Da es sich um einen dynamischen Enumerator handelt, kann er auf Warteschlangen zugreifen, die sich unter der aktuellen Cursorposition befinden. Auf eine Warteschlange, die vor der aktuellen Cursorposition eingefügt wird, kann erst nach Aufrufen von Reset zugegriffen werden.

Da die GetPublicQueues-, GetPrivateQueuesByMachine- und GetMessageQueueEnumerator-Methoden statisch sind, müssen Sie keine Instanz der MessageQueue-Klasse erstellen, bevor Sie die Methode aufrufen.

So rufen Sie eine statische Liste öffentlicher oder privater Warteschlangen ab

  1. Erstellen Sie ein Array vom Typ MessageQueue, das die Ergebnisse der Abfrage enthalten soll.

  2. Rufen Sie die entsprechende Methode der MessageQueue-Klasse auf:

    • Zum Abrufen aller öffentlichen Warteschlangen ohne Angabe von Kriterien rufen Sie die GetPublicQueues-Methode auf.

    • Um öffentliche Warteschlangen unter Angabe von Kriterien abzurufen, legen Sie den Criteria-Parameter auf den entsprechenden Wert fest und rufen die GetPrivateQueuesByMachine-Methode auf.

    • Um nur die öffentlichen Warteschlangen abzurufen, die über eine gemeinsame Kategorie-GUID verfügen, rufen Sie die GetPublicQueuesByCategory-Methode auf und geben die gewünschte Kategorie-GUID als Parameter an.

    • Um nur die öffentlichen Warteschlangen abzurufen, die über eine gemeinsame Bezeichnung verfügen, rufen Sie die GetPublicQueuesByLabel-Methode auf und geben die Bezeichnung als Parameter an.

    • Um nur die öffentlichen Warteschlangen eines bestimmten Computers abzurufen, rufen Sie die GetPublicQueuesByMachine-Methode auf und geben den Namen des Computers als Parameter an.

  3. Weisen Sie dem Array die Ergebnisse zu.

    Der folgende Code zeigt z. B., wie Sie die Bezeichnung von allen abgerufenen, öffentlichen Warteschlangen auf dem lokalen Computer in einem Listenfeld anzeigen können:

    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);
            }
        }
    

    Dieses Codebeispiel ist auch als Visual Basic-IntelliSense-Codeausschnitt verfügbar. Sie finden das Element in der Codeausschnittauswahl unter Windows-Betriebssystem > Meldungswarteschlangen. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von Ausschnitten in den Code (Visual Basic).

So rufen Sie eine dynamische Liste von Warteschlangen ab

  1. Erstellen Sie ein MessageQueueEnumerator-Objekt zum Aufnehmen der Abfrageergebnisse.

  2. Rufen Sie die GetMessageQueueEnumerator-Methode in der MessageQueue-Klasse auf.

  3. Um eine Teilmenge der Warteschlangen im Netzwerk abzurufen, legen Sie den MessageQueueCriteria-Parameter auf den entsprechenden Wert fest.

  4. Legen Sie die Ergebnisse auf das erstellte MessageQueueEnumerator-Objekt fest. Der Code kann wie folgt aussehen:

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

Siehe auch

Aufgaben

Gewusst wie: Abrufen von Meldungen

Konzepte

Warteschlangen- und Meldungsauflistungen