Share via


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

  1. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  2. Erstellen Sie im Dialogfeld Neues Projekt eine Visual Basic- oder Visual C#-Windows-Anwendung. Nennen Sie sie MessageQ.

  3. Öffnen Sie den Server-Explorer. Weitere Informationen hierzu finden Sie unter Gewusst wie: Zugreifen auf und Initialisieren von Server-Explorer/Datenbank-Explorer.

  4. Erweitern Sie den Knoten Server.

  5. Erweitern Sie den Knoten für den lokalen Server. Der Knoten für den lokalen Server ist durch den Computernamen gekennzeichnet.

  6. Erweitern Sie den Knoten Meldungswarteschlangen.

  7. Klicken Sie mit der rechten Maustaste auf Private Warteschlangen, und klicken Sie dann auf Warteschlange erstellen.

  8. Geben Sie als Warteschlangenname HelpRequest ein. Lassen Sie In transaktional ändern deaktiviert.

  9. 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

  1. 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.

  2. Legen Sie die (Name)-Eigenschaft der MessageQueue-Komponente auf helpRequestQueue fest.

  3. 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

  1. Fügen Sie über die Registerkarte Windows Forms der Toolbox folgende Steuerelemente zu Form1 hinzu:

  2. Legen Sie folgende Eigenschaften für die Steuerelemente fest:

    Steuerelement

    Eigenschaft

    Neuer Wert

    Label1

    Text

    Name

    Label2

    Text

    Message

    TextBox1

    Name

    txtName

     

    Text

    (leer)

    TextBox2

    Name

    txtMessage

     

    Text

    (leer)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    Meldung senden

    Button2

    Name

    refreshMessages

     

    Text

    Meldungsliste aktualisieren

    Button3

    Name

    purgeMessages

     

    Text

    Meldungsliste löschen

    CheckBox1

    Name

    highPriority

     

    Text

    Hohe Priorität

    DataGridView1

    Name

    messageGrid

  3. Ordnen Sie die Steuerelemente übersichtlich an.

So senden Sie eine Meldung an die Warteschlange

  1. Doppelklicken Sie im Designer auf die sendMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.

  2. 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();
    }
    
  3. 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).

  4. 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

  1. Doppelklicken Sie im Designer auf die refreshMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.

  2. 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

  1. Doppelklicken Sie im Designer auf die purgeMessage-Schaltfläche, um den Click-Ereignishandler im Code-Editor zu erstellen.

  2. 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

  1. Drucken Sie F5, um die Anwendung auszuführen.

  2. Geben Sie Ihren Namen und eine kurze Meldung ein.

  3. Klicken Sie auf Meldung senden, um die Meldung an die Warteschlange zu senden und die Anzeige zu aktualisieren.

  4. 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

Konzepte

Einführung in Messaging

Weitere Ressourcen

Verwenden von Messagingkomponenten