Sdílet prostřednictvím


Gewusst wie: Einsehen von Meldungen

Aktualisiert: November 2007

Sie können mit der Peek-Methode die erste Meldung in einer Warteschlange anzeigen lassen, ohne diese Meldung aus der Warteschlange zu entfernen. Dadurch kann die Komponente Informationen aus der Warteschlange abrufen, ohne andere Anwendungen oder Komponenten am Abrufen von Meldungen, die sie verarbeiten sollen, zu hindern.

5tete99e.alert_note(de-de,VS.90).gifHinweis:

Mit Peek kann nur die erste Meldung in der Warteschlange angezeigt werden. Da die Meldung beim Peeking nicht aus der Warteschlange entfernt wird, können Sie anschließend keine nachfolgenden Meldungen einsehen. Wenn Sie alle Meldungen in einer Warteschlange einsehen möchten, ohne diese aus der Warteschlange zu entfernen, können Sie die GetAllMessages-Methode oder die GetMessageEnumerator-Methode verwenden. Weitere Informationen hierzu finden Sie unter Warteschlangen- und Meldungsauflistungen.

Wenn beim Aufrufen der Peek-Methode keine Meldungen in der Warteschlange enthalten sind, wartet die Methode so lange, bis eine Meldung empfangen wird. Sie können ein Timeoutintervall angeben, wenn die Methode nur über einen bestimmten Zeitraum warten soll. Das Timeoutintervall wird als TimeSpan-Objekt angegeben. Meist wird das Timeoutintervall entweder auf 0 (null) festgelegt, sodass die Warteschlange auf eine Meldung hin überprüft wird und die Methode überhaupt nicht wartet, oder auf die Standardeinstellung (unendlich), bei der die Methode unbegrenzte Zeit wartet. Sie würden dies mit der folgenden Syntax im Code festlegen:

msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
     msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);

Sie können diese Einstellung auch im Eigenschaftenfenster vornehmen, indem Sie die TimeToBeReceived-Eigenschaft festlegen.

5tete99e.alert_note(de-de,VS.90).gifTipp:

Wenn Sie mit abhängigen Clients arbeiten, müssen Sie sicherstellen, dass die Uhr des Clientcomputers und die Uhr des Servers mit aktivem Message Queuing synchron sind. Andernfalls kann es beim Senden einer Meldung, deren TimeToBeReceived-Eigenschaft nicht InfiniteTimeout lautet, zu einem nicht vorhersehbaren Verhalten kommen.

Das Einsehen kann synchron oder asynchron erfolgen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Asynchrones Empfangen von Meldungen.

So führen Sie synchrones Peeking durch

  1. Erstellen Sie eine Instanz der MessageQueue-Komponente, und legen Sie deren Path-Eigenschaft auf die Warteschlange fest, auf die Sie verweisen möchten. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten.

  2. Erstellen Sie eine Instanz des Message-Objekts zum Speichern der Daten, die von der Peek-Methode aus der Warteschlange kopiert werden.

  3. Rufen Sie die Peek-Methode auf, um Daten über die erste Meldung in der Warteschlange abzurufen. Um für die Peek-Methode ein Timeout anzugeben, können Sie die Wartezeit (als TimeSpan-Objekt) der Methode optional als Argument der Methode eingeben.

    Der folgende Code zeigt z. B., wie Sie mit der Peek-Methode Informationen über die erste Meldung in einer Warteschlange abrufen und anzeigen können.

    Public Sub LookFirstMessage()
        Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue")
        Dim FirstMessage As System.Messaging.Message
        FirstMessage = NewQueue.Peek
        Dim targetNames() As String = {"System.String,mscorlib"}
        FirstMessage.Formatter = _
           New System.Messaging.XmlMessageFormatter(targetNames)
        Dim label As String = CStr(FirstMessage.Label)
    End Sub
    
     public void LookFirstMessage()
        {
            System.Messaging.MessageQueue newQueue =
               new System.Messaging.MessageQueue(".\\MyQueue");
            System.Messaging.Message firstMessage;
            string[] types = { "System.String,mscorlib" };
            firstMessage = newQueue.Peek();
            firstMessage.Formatter =
               new System.Messaging.XmlMessageFormatter(types);
            string label = firstMessage.Label.ToString();
        }
    

Siehe auch

Aufgaben

Gewusst wie: Programmgesteuertes Empfangen von Meldungen

Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten

Weitere Ressourcen

Lesen und Empfangen von Meldungen