Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IInputChannel.Receive-Methode: (TimeSpan)

 

Veröffentlicht: Oktober 2016

Gibt die empfangene Nachricht zurück, wenn eine verfügbar ist. Ist keine Nachricht verfügbar, erfolgt eine Blockade für die Dauer eines festgelegten Zeitintervalls.

Namespace:   System.ServiceModel.Channels
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

Message Receive(
	TimeSpan timeout
)

Parameter

timeout
Type: System.TimeSpan

Der TimeSpan-Wert, der angibt, wie lange der Empfangsvorgang vor Timeout und Ausgabe von TimeoutException abgeschlossen sein muss.

Rückgabewert

Type: System.ServiceModel.Channels.Message

Der empfangene Message.

Exception Condition
TimeoutException

Der festgelegte timeout wird überstiegen, bevor der Vorgang abgeschlossen ist.

ArgumentOutOfRangeException

Der festgelegte Timeout ist kleiner als 0 (null).

Verwenden Sie die synchrone Receive-Methode, wenn eine Blockade des aktuellen Threads bis zum Eingehen einer Anforderungsnachricht oder bis zum Überschreiten des von timeout festgelegten Zeitintervalls akzeptabel ist Verwenden Sie die asynchrone BeginReceive-Methode, wenn die Anwendungsverarbeitung ohne Wartezeiten für den Empfang der Anforderung fortgesetzt werden soll.

Der synchrone Receive-Vorgang ist mit oder ohne ein explizites Timeout verfügbar.

Wenn keine Nachricht verfügbar ist, erfolgt eine Blockade, bis eine verfügbar ist oder bis der Timeout überschritten wird.

Receive kann mehrmals oder gleichzeitig aufgerufen werden. Für jede empfangene Nachricht kann nur ein Receive-Aufruf durchgeführt werden.

Im folgenden Code wird veranschaulicht, wie diese Methode implementiert wird:

public Message Receive(TimeSpan timeout)
{
    Message message;
    while (true)
    {
        message = this.InnerChannel.Receive(timeout);
        if (ProcessReceivedMessage(ref message))
        {
            break;
        }
    }

    return message;
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: