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.BeginTryReceive-Methode: (TimeSpan, AsyncCallback, Object)

 

Veröffentlicht: Oktober 2016

Startet einen asynchronen Vorgang, eine Nachricht zu empfangen, die über einen angegebenen Timeout und ein zugeordnetes Statusobjekt verfügt.

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

IAsyncResult BeginTryReceive(
	TimeSpan timeout,
	AsyncCallback callback,
	object state
)

Parameter

timeout
Type: System.TimeSpan

Der TimeSpan-Wert, der das Zeitintervall für das Warten darauf angibt, das eine Nachricht verfügbar wird.

callback
Type: System.AsyncCallback

Der AsyncCallback-Delegat, der die Benachrichtigung über den Abschluss des asynchronen Vorgangs erhält.

state
Type: System.Object

Ein durch die Anwendung festgelegtes Objekt, das dem asynchronen Vorgang zugeordnete Statusinformationen enthält.

Rückgabewert

Type: System.IAsyncResult

Der IAsyncResult-Wert, der auf den asynchronen Empfangsvorgang verweist.

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 asynchrone BeginTryReceive(TimeSpan, AsyncCallback, Object)-Methode, wenn die Anwendungsverarbeitung ohne Wartezeiten fortgesetzt werden soll. Verwenden Sie die synchrone TryReceive(TimeSpan, Message)-Methode, wenn eine Blockade des aktuellen Threads bis zur Antwort auf die Anforderungsnachricht akzeptabel ist oder bis das Timeoutintervall abgelaufen ist.

Der Vorgang ist nicht abgeschlossen, bevor entweder eine Nachricht im Kanal verfügbar wird oder der Timeout auftritt.

Wenn Sie Timeouts handhaben und nicht nur den TimeoutException neu auslösen oder einbinden, sollten Sie BeginTryReceive(TimeSpan, AsyncCallback, Object) anstatt BeginReceive aufrufen.

Wenn Sie Timeouts nicht gesondert behandeln, rufen Sie einfach BeginReceive auf, andernfalls verlieren Sie Fehlerinformationen.

Hinweise für Implementierer:

Der Vorgang gibt false von EndTryReceive(IAsyncResult, Message) zurück, wenn die angegebene timeout überschritten wurde.

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

public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
    TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
    result.Begin();
    return result;
}

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: