Exemplarische Vorgehensweise: Erstellen einer Warteschlange und Arbeiten mit Meldungen
Aktualisiert: November 2007
Anhand der Prozeduren in diesem Thema wird gezeigt, wie mit der MessageQueue-Komponente eine Meldungswarteschlange erstellt wird. Mit dieser Komponente senden Sie Meldungen an die Warteschlange und rufen sie aus der Warteschlange ab. Die Meldungen protokollieren Hilfeanforderungen.
Hinweis: |
---|
Um Warteschlangeninformationen im Server-Explorer anzeigen oder programmgesteuert auf Warteschlangen zugreifen zu können, müssen Sie die Windows-Komponente Message Queuing auf dem Clientcomputer installieren. Fügen Sie diesen Dienst über die Systemsteuerung mithilfe der Option Software hinzu. |
Hinweis: |
---|
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
So erstellen Sie eine Meldungswarteschlange auf dem Computer
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Erstellen Sie im Dialogfeld Neues Projekt eine Visual Basic- oder Visual C#-Windows-Anwendung. Nennen Sie sie MessageQ.
Öffnen Sie den Server-Explorer. Weitere Informationen hierzu finden Sie unter Gewusst wie: Zugreifen auf und Initialisieren von Server-Explorer/Datenbank-Explorer.
Erweitern Sie den Knoten Server.
Erweitern Sie den Knoten für den lokalen Server. Der Knoten für den lokalen Server ist durch den Computernamen gekennzeichnet.
Erweitern Sie den Knoten Meldungswarteschlangen.
Klicken Sie mit der rechten Maustaste auf Private Warteschlangen, und klicken Sie dann auf Warteschlange erstellen.
Geben Sie als Warteschlangenname HelpRequest ein. Lassen Sie In transaktional ändern deaktiviert.
Eine neue private Warteschlange mit dem Namen HelpRequest wird erstellt und im Server-Explorer angezeigt.
Hinweis: Sie können die neu erstellte Warteschlange auch über das Symbol Arbeitsplatz anzeigen. Klicken Sie auf dem Desktop des Computers mit der rechten Maustaste auf das Symbol Arbeitsplatz und dann auf Verwalten. Erweitern Sie den Knoten Dienste und Anwendungen. Erweitern Sie den Knoten Message Queuing, und markieren Sie den Ordner Private Warteschlangen. Die neue Warteschlange wird in der Warteschlangenliste angezeigt.
So fügen Sie eine MessageQueue-Komponente für die Meldungswarteschlange hinzu
Ziehen Sie die HelpRequest-Warteschlange vom Server-Explorer auf das Formular. Eine neue MessageQueue-Komponente, die für die HelpRequest-Warteschlange konfiguriert ist, wird zum Projekt hinzugefügt.
Die MessageQueue-Komponente wird für den programmgesteuerten Zugriff auf Meldungen verwendet, die in der von Ihnen im vorhergehenden Abschnitt erstellten HelpRequest-Warteschlange enthalten sind.
Legen Sie die (Name)-Eigenschaft der MessageQueue-Komponente auf helpRequestQueue fest.
Erweitern Sie im Eigenschaftenfenster den Knoten MessageReadPropertyFilter. Legen Sie den Wert von Priority auf true fest . Dadurch wird die Priorität der Meldung abgerufen, wenn eine Meldung aus der Warteschlange abgerufen wird.
Über die in der nächsten Prozedur erstellte Benutzeroberfläche kann der Benutzer Text für eine Hilfeanforderung eingeben und die Priorität der Meldung festlegen. Der Benutzer klickt auf eine Sendeschaltfläche, um die Anforderung an die Warteschlange zu senden. Der Inhalt der Warteschlange wird in einem DataGridView-Steuerelement angezeigt. Die Benutzeroberfläche enthält außerdem Schaltflächen, über die das Datenblatt mit dem aktuellen Inhalt der Warteschlange aktualisiert und der Warteschlangeninhalt endgültig gelöscht werden kann.
So erstellen Sie eine Benutzeroberfläche
Fügen Sie über die Registerkarte Windows Forms der Toolbox folgende Steuerelemente zu Form1 hinzu:
Zwei Label-Steuerelemente
Zwei TextBox-Steuerelemente
Drei Button-Steuerelemente
Ein CheckBox-Steuerelement
Ein DataGridView-Steuerelement
Legen Sie folgende Eigenschaften für die Steuerelemente fest:
Steuerelement
Eigenschaft
Neuer Wert
Label1
Name
Label2
Message
TextBox1
txtName
(leer)
TextBox2
txtMessage
(leer)
true
Button1
sendMessage
Meldung senden
Button2
refreshMessages
Meldungsliste aktualisieren
Button3
purgeMessages
Meldungsliste löschen
CheckBox1
highPriority
Hohe Priorität
DataGridView1
messageGrid
Ordnen Sie die Steuerelemente übersichtlich an.
So senden Sie eine Meldung an die Warteschlange
Doppelklicken Sie im Designer auf die sendMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.
Fügen Sie der Methode Code hinzu, um eine neue Message-Instanz zu erstellen, diese an die Warteschlange zu senden und die Meldungsanzeige zu aktualisieren. Die DisplayMessages-Methode wird im nächsten Schritt geschrieben.
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(); }
Fügen Sie dem Projekt einen Verweis auf System.Data hinzu. Fügen Sie eine Imports-Anweisung (.NET-Namespace und Typ)-Anweisung (Visual Basic) oder eine using (C#-Referenz)-Anweisung für System.Data hinzu. Weitere Informationen finden Sie unter Verwalten von Verweisen und Gewusst wie: Hinzufügen oder Entfernen von Verweisen in Visual Studio (Visual Basic).
Fügen Sie eine Methode hinzu, um den Inhalt der Warteschlange im DataGridView-Steuerelement anzuzeigen. Diese Methode ruft mithilfe der MessageQueue.GetAllMessages-Methode alle Meldungen aus der Warteschlange ab. Die ausgewählten Warteschlangeneigenschaften werden zum DataTable-Objekt hinzugefügt, das für das DataGridView-Steuerelement als Datenquelle verwendet wird. Um den Text der Meldung abzurufen, müssen Sie ein Formatierungsprogramm für die Meldung erstellen.
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;
}
So zeigen Sie den Inhalt der Warteschlange an
Doppelklicken Sie im Designer auf die refreshMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.
Rufen Sie innerhalb des Click-Ereignishandlers die DisplayMessages-Methode auf.
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();
}
So löschen Sie den Inhalt der Warteschlange
Doppelklicken Sie im Designer auf die purgeMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.
Rufen Sie die Purge-Methode der helpRequestQueue auf, und aktualisieren Sie anschließend den Inhalt des DataGridView-Steuerelements.
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();
}
So testen Sie die Anwendung
Drucken Sie F5, um die Anwendung auszuführen.
Geben Sie Ihren Namen und eine kurze Meldung ein.
Klicken Sie auf Meldung senden, um die Meldung an die Warteschlange zu senden und die Anzeige zu aktualisieren.
Klicken Sie auf Meldungsliste löschen, um alle Meldungen in der Warteschlange zu löschen. Die Liste der Meldungen ist nun leer.
Siehe auch
Aufgaben
Gewusst wie: Erstellen von Warteschlangen
Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten
Gewusst wie: Senden einfacher Meldungen
Gewusst wie: Abrufen von Meldungen