IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.