Freigeben über


IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Methode

Definition

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

public:
 IAsyncResult ^ BeginTryReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginTryReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginTryReceive (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult

Parameter

timeout
TimeSpan

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

callback
AsyncCallback

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

state
Object

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

Gibt zurück

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

Ausnahmen

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

Der festgelegte Timeout ist kleiner als 0 (null).

Beispiele

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;
}

Hinweise

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 Ausführende

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

Gilt für: