Condividi tramite


Procedura: recuperare messaggi

Aggiornamento: novembre 2007

Per recuperare un elenco di messaggi, è possibile utilizzare i meccanismi di recupero statici o dinamici. Quando si recupera un elenco statico di messaggi, viene restituita una matrice di oggetti Message che rappresentano tutti i messaggi della coda.

Quando si recupera un elenco dinamico di messaggi, viene restituito un oggetto MessageEnumerator che rappresenta tutti i messaggi della coda. Un oggetto MessageEnumerator è un cursore, inizializzato all'inizio di un elenco dinamico. L'ordine dell'elenco è identico all'ordine dei messaggi della coda, in base alla priorità dei messaggi. È possibile spostare il cursore sul primo messaggio della coda chiamando il metodo MoveNext. Una volta inizializzato l'enumeratore, è possibile utilizzare MoveNext per avanzare tra i messaggi rimanenti. È possibile specificare se attendere che un messaggio diventi disponibile passando un timeout al metodo MoveNext.

Essendo dinamico, l'enumeratore consente di accedere a un messaggio accodato oltre la posizione corrente del cursore, ad esempio a causa della bassa priorità. L'enumeratore non consente di accedere a un messaggio inserito prima della posizione corrente del cursore. Un oggetto MessageEnumerator non consente di tornare indietro. Con un cursore è possibile eseguire uno spostamento di solo avanzamento. Il metodo Reset consente di riposizionare il cursore all'inizio della coda.

Nota:

Se si crea un'istanza di una componente MessageQueue con la proprietà DenySharedReceive impostata su true non sarà possibile modificare i messaggi dell'enumeratore con un'altra applicazione mentre si è connessi alla coda.

Per recuperare un elenco statico di messaggi

  1. Creare un'istanza del componente MessageQueue e impostarne la proprietà Path sulla coda a cui si desidera fare riferimento. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.

    Nota:

    Se il componente è stato creato da Esplora server, la proprietà Path viene impostata automaticamente sul percorso della coda.

  2. Creare una matrice che faccia riferimento alla classe Message e che contenga i risultati della query.

  3. Chiamare il metodo GetAllMessages.

  4. Assegnare i risultati alla matrice creata.

    Nel codice riportato di seguito viene illustrato come utilizzare la funzione GetAllMessages per recuperare i messaggi da una coda e visualizzare le etichette dei messaggi in una casella di riepilogo. In questo esempio si presuppone che un'istanza del componente MessageQueue sia stata aggiunta all'applicazione.

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

    Questo esempio di codice è anche disponibile come frammento di codice IntelliSense ed è presente nella casella di selezione dei frammenti di codice in Sistema operativo Windows > Code messaggi. Per ulteriori informazioni, vedere Procedura: inserire frammenti nel codice (Visual Basic).

Per recuperare un elenco dinamico di messaggi

  1. Creare un'istanza del componente MessageQueue e impostarne la proprietà Path sulla coda a cui si desidera fare riferimento. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.

    Nota:

    Se il componente è stato creato da Esplora server, la proprietà Path viene impostata automaticamente sul percorso della coda.

  2. Creare un oggetto MessageEnumerator che contenga i risultati della query.

  3. Chiamare il metodo GetEnumerator della classe MessageQueue.

  4. Assegnare i risultati all'oggetto MessageEnumerator. Il codice dovrebbe risultare simile al seguente:

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

Vedere anche

Attività

Procedura: recuperare code

Concetti

Insiemi di code e di messaggi