IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metod

Definition

Påbörjar en asynkron åtgärd för att ta emot ett meddelande som har ett angivet timeout- och tillståndsobjekt som är associerat med det.

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

Parametrar

timeout
TimeSpan

Det TimeSpan som anger tidsintervallet för att vänta tills ett meddelande blir tillgängligt.

callback
AsyncCallback

Ombudet AsyncCallback som tar emot meddelandet om att den asynkrona åtgärden har slutförts.

state
Object

Ett objekt som anges av programmet och som innehåller tillståndsinformation som är associerad med den asynkrona åtgärden.

Returer

Det IAsyncResult som refererar till den asynkrona mottagningsåtgärden.

Undantag

Den angivna timeout överskrids innan åtgärden har slutförts.

Den angivna tidsgränsen är mindre än noll.

Exempel

Följande kod visar hur du implementerar den här metoden:

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

Kommentarer

Använd den asynkrona BeginTryReceive(TimeSpan, AsyncCallback, Object) metoden när du vill att programbearbetningen ska fortsätta utan att vänta. Använd den synkrona TryReceive(TimeSpan, Message) metoden när det är acceptabelt att den aktuella tråden blockeras när den svarar på begärandemeddelandet eller tills tidsgränsintervallet överskrids.

Åtgärden är inte slutförd förrän antingen ett meddelande blir tillgängligt i kanalen eller tidsgränsen inträffar.

Om du ska hantera timeouter och inte bara kasta om eller omsluta TimeoutExceptionbör du anropa BeginTryReceive(TimeSpan, AsyncCallback, Object) i stället för BeginReceive.

Om du inte ska behandla timeouter speciellt kan du bara anropa BeginReceive, annars förlorar du felinformation.

Anteckningar till implementerare

Åtgärden returnerar false från EndTryReceive(IAsyncResult, Message) om den angivna timeout överskrids.

Gäller för