IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zahájí asynchronní operaci, která přijme zprávu, která má přiřazený zadaný časový limit a objekt stavu.
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
Parametry
- callback
- AsyncCallback
Delegát AsyncCallback , který obdrží oznámení o dokončení asynchronní operace.
- state
- Object
Objekt určený aplikací, který obsahuje informace o stavu přidružené k asynchronní operaci.
Návraty
Ten IAsyncResult , který odkazuje na asynchronní operaci příjmu.
Výjimky
Zadaná timeout
hodnota je překročena před dokončením operace.
Zadaný časový limit je menší než nula.
Příklady
Následující kód ukazuje, jak implementovat tuto metodu:
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
Poznámky
Asynchronní BeginTryReceive(TimeSpan, AsyncCallback, Object) metodu použijte, pokud chcete, aby zpracování aplikace pokračovalo bez čekání. Synchronní TryReceive(TimeSpan, Message) metodu použijte, pokud je přijatelné, aby aktuální vlákno bylo blokováno při odpovídání na zprávu požadavku nebo dokud není překročen časový limit.
Operace není dokončena, dokud nebude v kanálu k dispozici zpráva nebo dokud nedojde k vypršení časového limitu.
Pokud se chystáte zpracovávat časové limity, a ne jen znovu vyvolat nebo zabalit TimeoutException, měli byste místo BeginReceivezavolat BeginTryReceive(TimeSpan, AsyncCallback, Object) .
Pokud nebudete ošetřovat vypršení časových limitů speciálně, stačí zavolat BeginReceive, jinak ztratíte informace o chybě.
Poznámky pro implementátory
Operace se vrátí false
z EndTryReceive(IAsyncResult, Message) , pokud je zadaná timeout
hodnota překročena.