Share via


IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metoda

Definice

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

timeout
TimeSpan

Určuje TimeSpan interval čekání na zpřístupnění zprávy.

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.

Platí pro