IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.