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
Scegliere Nuovo dal menu File, quindi scegliere Progetto.
Dalla finestra di dialogo Nuovo progetto creare un'Applicazione Windows in Visual Basic o Visual C#. Assegnare il nome MessageQ.
Aprire Esplora server. Per ulteriori informazioni, vedere Procedura: accedere e inizializzare Esplora server/Esplora database.
Espandere il nodo Server.
Espandere il nodo del server locale, identificato dal nome del computer.
Espandere il nodo Code messaggi.
Fare clic con il pulsante destro del mouse su Code private, quindi scegliere Crea coda.
Immettere HelpRequest come nome della coda. Non selezionare Rendi transazionale.
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
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.
Impostare la proprietà (Name) del componente MessageQueue su helpRequestQueue.
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
Dalla scheda Windows Form della Casella degli strumenti aggiungere i seguenti controlli in Form1:
Due controlli Label
Due controlli TextBox
Tre controlli Button
Un controllo CheckBox
Una classe DataGridView
Impostare le seguenti proprietà dei controlli:
Controllo
Proprietà
Nuovo valore
Label1
Nome
Label2
Messaggio
TextBox1
txtName
(vuoto)
TextBox2
txtMessage
(vuoto)
true
Button1
SendMessage
Send message
Button2
refreshMessages
Refresh message list
Button3
purgeMessages
Purge message list
CheckBox1
highPriority
High priority
DataGridView1
messageGrid
Disporre i controlli seguendo un determinato ordine.
Per inviare un messaggio alla coda
Nella finestra di progettazione fare doppio clic sul pulsante sendMessage per creare il gestore eventi Click nell'editor di codice.
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(); }
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).
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
Nella finestra di progettazione fare doppio clic sul pulsante refreshMessage per creare il gestore eventi Click nell'editor di codice.
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
Nella finestra di progettazione fare doppio clic sul pulsante purgeMessage per creare il gestore eventi Click nell'editor di codice.
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
Premere F5 per eseguire l'applicazione.
Digitare il nome e un breve messaggio.
Fare clic su Send message per inviare il messaggio alla coda e aggiornare la visualizzazione.
Fare clic su Purge messages per eliminare tutti i messaggi contenuti nella coda. L'elenco dei messaggi ora è vuoto.
Vedere anche
Attività
Procedura: creare istanze del componente MessageQueue
Procedura: inviare messaggi semplici
Procedura: recuperare messaggi
Concetti
Introduzione alla messaggistica