Condividi tramite


Procedura dettagliata: creazione di una coda e utilizzo dei messaggi

Aggiornamento: novembre 2007

Le procedure descritte in questa sezione consentono di creare una coda di messaggi utilizzando il componente MessageQueue, tramite il quale i messaggi vengono inviati alla coda e da quest'ultima vengono recuperati. Nei messaggi sono registrate le richieste di visualizzazione della Guida.

Nota:

Per visualizzare informazioni sulla coda in Esplora server o per accedere alle code a livello di codice, è necessario installare il componente Accodamento messaggi di Windows nel computer client. Per aggiungere questo servizio, utilizzare Installazione applicazioni nel Panello di controllo.

Nota:

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Per creare una coda di messaggi sul computer

  1. Scegliere Nuovo dal menu File, quindi scegliere Progetto.

  2. Dalla finestra di dialogo Nuovo progetto creare un'Applicazione Windows in Visual Basic o Visual C#. Assegnare il nome MessageQ.

  3. Aprire Esplora server. Per ulteriori informazioni, vedere Procedura: accedere e inizializzare Esplora server/Esplora database.

  4. Espandere il nodo Server.

  5. Espandere il nodo del server locale, identificato dal nome del computer.

  6. Espandere il nodo Code messaggi.

  7. Fare clic con il pulsante destro del mouse su Code private, quindi scegliere Crea coda.

  8. Immettere HelpRequest come nome della coda. Non selezionare Rendi transazionale.

  9. Verrà creata una nuova coda privata denominata HelpRequest, visualizzata in Esplora server.

    Nota:

    È possibile visualizzare la coda appena creata anche mediante l'icona Risorse del computer. Fare clic con il pulsante destro del mouse sull'icona Risorse del computer sul desktop, quindi scegliere Gestione. Espandere il nodo Servizi e applicazioni. Espandere il nodo Accodamento messaggi e selezionare la cartella Code private. La nuova coda verrà visualizzata nell'elenco delle code.

Per aggiungere un componente MessageQueue alla coda di messaggi

  1. Trascinare la coda HelpRequest da Esplora server al form. Un nuovo componente MessageQueue verrà aggiunto al progetto, configurato per la coda HelpRequest.

    Il componente MessageQueue viene utilizzato per accedere a livello di codice ai messaggi contenuti nella coda HelpRequest creata nella sezione precedente.

  2. Impostare la proprietà (Name) del componente MessageQueue su helpRequestQueue.

  3. Nella finestra Proprietà espandere il nodo MessageReadPropertyFilter. Impostare la proprietà Priority su true. In questo modo la priorità del messaggio verrà recuperata quando un messaggio verrà recuperato dalla coda.

    L'interfaccia utente creata nella procedura successiva consente all'utente di immettere testo relativo a una richiesta di visualizzazione della Guida e di impostare la priorità del messaggio. Per inviare la richiesta alla coda, fare clic sul pulsante di invio. Il contenuto della coda viene visualizzato in un controllo DataGridView. L'interfaccia utente contiene anche dei pulsanti per aggiornare la griglia con il contenuto corrente della coda e eliminare il contenuto della coda.

Per creare l'interfaccia utente

  1. Dalla scheda Windows Form della Casella degli strumenti aggiungere i seguenti controlli in Form1:

  2. Impostare le seguenti proprietà dei controlli:

    Controllo

    Proprietà

    Nuovo valore

    Label1

    Text

    Nome

    Label2

    Text

    Messaggio

    TextBox1

    Name

    txtName

     

    Text

    (vuoto)

    TextBox2

    Name

    txtMessage

     

    Text

    (vuoto)

     

    Multiline

    true

    Button1

    Name

    SendMessage

     

    Text

    Send message

    Button2

    Name

    refreshMessages

     

    Text

    Refresh message list

    Button3

    Name

    purgeMessages

     

    Text

    Purge message list

    CheckBox1

    Name

    highPriority

     

    Text

    High priority

    DataGridView1

    Name

    messageGrid

  3. Disporre i controlli seguendo un determinato ordine.

Per inviare un messaggio alla coda

  1. Nella finestra di progettazione fare doppio clic sul pulsante sendMessage per creare il gestore eventi Click nell'editor di codice.

  2. Aggiungere codice al metodo per creare una nuova istanza di Message e inviarla alla coda, quindi aggiornare la visualizzazione del messaggio. Nel prossimo passaggio verrà aggiunto il metodo DisplayMessages.

    Private Sub sendMessage_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles sendMessage.Click
       Dim theMessage As System.Messaging.Message = _
          New System.Messaging.Message(Me.txtMessage.Text)
       theMessage.Label = Me.txtName.Text
       If highPriority.Checked Then
          theMessage.Priority = Messaging.MessagePriority.Highest
       Else
          theMessage.Priority = Messaging.MessagePriority.Normal
       End If
       helpRequestQueue.Send(theMessage)
       DisplayMessages()
    End Sub
    
    private void sendMessage_Click(object sender, System.EventArgs e)
    {
       System.Messaging.Message theMessage = 
          new System.Messaging.Message(txtMessage.Text);
       theMessage.Label = txtName.Text; 
       if (highPriority.Checked)
          theMessage.Priority = System.Messaging.MessagePriority.Highest;
       else
          theMessage.Priority = System.Messaging.MessagePriority.Normal;
       helpRequestQueue.Send(theMessage);
       DisplayMessages();
    }
    
  3. Aggiungere un riferimento a System.Data nel progetto. Aggiungere un'istruzione Istruzione Imports (tipo e spazio dei nomi .NET) (Visual Basic) o using (Riferimenti per C#) per System.Data. Per ulteriori informazioni, vedere Gestione dei riferimenti e Procedura: aggiungere o rimuovere riferimenti in Visual Studio (Visual Basic).

  4. Aggiungere un metodo per visualizzare il contenuto della coda nel controllo DataGridView. Questo metodo utilizza il metodo MessageQueue.GetAllMessages per recuperare tutti i messaggi dalla coda. Le proprietà della coda selezionate vengono aggiunte a un oggetto DataTable utilizzato come origine dati per il controllo DataGridView. Per recuperare il testo del messaggio, è necessario creare un apposito formattatore.

    Private Sub DisplayMessages()
       ' Create a DataTable
       Dim messageTable As New DataTable()
       messageTable.Columns.Add("Name")
       messageTable.Columns.Add("Message")
       messageTable.Columns.Add("Priority")
       Dim messages() As System.Messaging.Message
       messages = helpRequestQueue.GetAllMessages()
       ' Need a formatter to get the text of the message body.
       Dim stringFormatter As System.Messaging.XmlMessageFormatter = _
          New System.Messaging.XmlMessageFormatter(New String() _
          {"System.String"})
       Dim index As Integer
       Dim am As System.Messaging.Message
       ' Add each message to the DataTable
       For index = 0 To messages.Length - 1
          messages(index).Formatter = stringFormatter
          am = messages(index)
          messageTable.Rows.Add(New String() _
             {am.Label, am.Body.ToString(), am.Priority.ToString()})
       Next
    
       messageGrid.DataSource = messageTable
    End Sub
    
    private void DisplayMessages()
    {
       DataTable messageTable = new DataTable();
       messageTable.Columns.Add("Name");
       messageTable.Columns.Add("Message");
       messageTable.Columns.Add("Priority");
       System.Messaging.Message[] messages;
       messages = helpRequestQueue.GetAllMessages();
       System.Messaging.XmlMessageFormatter stringFormatter;
       stringFormatter = new System.Messaging.XmlMessageFormatter(
          new string[] {"System.String"});
       for (int index = 0; index < messages.Length; index++) 
       {
          messages[index].Formatter = stringFormatter;
          messageTable.Rows.Add(new string[] {
             messages[index].Label,
             messages[index].Body.ToString(),
             messages[index].Priority.ToString() });
       }
       messageGrid.DataSource = messageTable;
    

    }

Per visualizzare il contenuto della coda

  1. Nella finestra di progettazione fare doppio clic sul pulsante refreshMessage per creare il gestore eventi Click nell'editor di codice.

  2. All'interno del gestore eventi Click chiamare il metodo DisplayMessages.

    Private Sub refreshMessages_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles refreshMessages.Click
       DisplayMessages()
    End Sub
    
    private void refreshMessages_Click(object sender, System.EventArgs e)
    {
       DisplayMessages();
    

    }

Per cancellare il contenuto della coda

  1. Nella finestra di progettazione fare doppio clic sul pulsante purgeMessage per creare il gestore eventi Click nell'editor di codice.

  2. Chiamare il metodo Purge di helpRequestQueue, quindi aggiornare il contenuto del controllo DataGridView.

    Private Sub purgeMessages_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles purgeMessages.Click
       helpRequestQueue.Purge()
       DisplayMessages()
    End Sub
    
    private void purgeMessages_Click(object sender, System.EventArgs e)
    {
       helpRequestQueue.Purge();
       DisplayMessages();
    

    }

Per eseguire il test dell'applicazione

  1. Premere F5 per eseguire l'applicazione.

  2. Digitare il nome e un breve messaggio.

  3. Fare clic su Send message per inviare il messaggio alla coda e aggiornare la visualizzazione.

  4. Fare clic su Purge messages per eliminare tutti i messaggi contenuti nella coda. L'elenco dei messaggi ora è vuoto.

Vedere anche

Attività

Procedura: creare code

Procedura: creare istanze del componente MessageQueue

Procedura: inviare messaggi semplici

Procedura: recuperare messaggi

Concetti

Introduzione alla messaggistica

Altre risorse

Utilizzo dei componenti di messaggistica