Freigeben über


Gewusst wie: Abrufen von Meldungen

Aktualisiert: November 2007

Eine Liste mit Meldungen können Sie mit statischen oder dynamischen Abrufmechanismen abrufen. Wenn Sie eine statische Liste mit Meldungen abrufen, gibt das System ein Array von Message-Objekten zurück, die alle Meldungen in der Warteschlange darstellen.

Wenn Sie eine dynamische Liste mit Meldungen abrufen, gibt das System ein MessageEnumerator-Objekt zurück, das alle Meldungen in der Warteschlange darstellt. Ein MessageEnumerator-Objekt ist ein Cursor, der auf den Anfang einer dynamischen Liste initialisiert ist. Die Listenreihenfolge ist mit der Reihenfolge der Meldungen in der Warteschlange identisch, wobei die Reihenfolge nach der Meldungspriorität bestimmt wird. Sie können den Cursor auf die erste Meldung in der Warteschlange setzen, indem Sie die MoveNext-Methode aufrufen. Nachdem der Enumerator initialisiert wurde, können Sie die verbleibenden Meldungen mit MoveNext vorwärts durchgehen. Wenn Sie warten möchten, bis eine Meldung verfügbar wird, können Sie einen Timeout an die MoveNext-Methode übergeben.

Da es sich um einen dynamischen Enumerator handelt, kann er auf Meldungen zugreifen, die sich, z. B. aufgrund niedriger Priorität, unter der aktuellen Cursorposition befinden. Der Enumerator kann nicht auf Meldungen zugreifen, die vor der aktuellen Cursorposition eingefügt werden. Es ist nicht möglich, die Meldungen mit dem MessageEnumerator-Objekt rückwärts zu durchlaufen. Mit einem Cursor ist nur eine Vorwärtsbewegung möglich. Mit der Reset-Methode können Sie den Cursor wieder an den Anfang der Warteschlange setzen.

Hinweis:

Wenn Sie eine MessageQueue instanziieren, wobei DenySharedReceive auf true festgelegt ist, kann keine andere Anwendung die Meldungen im Enumerator ändern, solange eine Verbindung mit der Warteschlange besteht.

So rufen Sie eine statische Liste von Meldungen ab

  1. Erstellen Sie eine Instanz der MessageQueue-Komponente, und legen Sie deren Path-Eigenschaft auf die Warteschlange fest, auf die Sie verweisen möchten. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten.

    Hinweis:

    Wenn Sie die Komponente im Server-Explorer erstellt haben, wird die Path-Eigenschaft automatisch auf den Pfad dieser Warteschlange festgelegt.

  2. Erstellen Sie für die Abfrageergebnisse ein Array, das auf die Message-Klasse verweist.

  3. Rufen Sie die GetAllMessages-Methode auf.

  4. Weisen Sie dem erstellten Array die Ergebnisse zu.

    Der folgende Code zeigt, wie Sie die Meldungen mithilfe der GetAllMessages-Funktion aus einer Warteschlange abrufen und die Meldungsbezeichnungen in einem Listenfeld anzeigen können. In diesem Beispiel wird davon ausgegangen, dass eine Instanz der MessageQueue-Komponente zur Anwendung hinzugefügt wurde.

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

    Dieses Codebeispiel ist auch als 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 mit Meldungen ab

  1. Erstellen Sie eine Instanz der MessageQueue-Komponente, und legen Sie deren Path-Eigenschaft auf die Warteschlange fest, auf die Sie verweisen möchten. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten.

    Hinweis:

    Wenn Sie die Komponente im Server-Explorer erstellt haben, wird die Path-Eigenschaft automatisch auf den Pfad dieser Warteschlange festgelegt.

  2. Erstellen Sie ein MessageEnumerator-Objekt zum Aufnehmen der Abfrageergebnisse.

  3. Rufen Sie die GetEnumerator-Methode in der MessageQueue-Klasse auf.

  4. Weisen Sie dem MessageEnumerator-Objekt die Ergebnisse zu. Der Code kann wie folgt aussehen:

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

Siehe auch

Aufgaben

Gewusst wie: Abrufen von Warteschlangen

Konzepte

Warteschlangen- und Meldungsauflistungen