IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rozpoczyna operację asynchroniczną w celu odebrania komunikatu, który ma określony limit czasu i skojarzony z nim obiekt stanu.
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
Delegat AsyncCallback , który odbiera powiadomienie o zakończeniu operacji asynchronicznej.
- state
- Object
Obiekt określony przez aplikację zawierający informacje o stanie skojarzone z operacją asynchroniczną.
Zwraca
Element IAsyncResult odwołujący się do operacji odbierania asynchronicznego.
Wyjątki
timeout
Określona wartość zostanie przekroczona przed ukończeniem operacji.
Określony limit czasu jest mniejszy niż zero.
Przykłady
Poniższy kod ilustruje sposób implementowania tej metody:
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
Uwagi
Użyj metody asynchronicznej BeginTryReceive(TimeSpan, AsyncCallback, Object) , jeśli chcesz, aby przetwarzanie aplikacji było kontynuowane bez oczekiwania. Użyj metody synchronicznej TryReceive(TimeSpan, Message) , gdy jest akceptowalna, aby bieżący wątek był blokowany, gdy odpowiada na komunikat żądania lub do momentu przekroczenia interwału przekroczenia limitu czasu.
Operacja nie zostanie ukończona, dopóki komunikat nie stanie się dostępny w kanale lub upłynął limit czasu.
Jeśli zamierzasz obsługiwać przekroczenia limitu czasu, a nie tylko ponownie zgłaszać lub opakowować element , należy wywołać metodę TimeoutExceptionBeginTryReceive(TimeSpan, AsyncCallback, Object) zamiast BeginReceive.
Jeśli nie będziesz traktować limitów czasu specjalnie, po prostu wywołaj metodę BeginReceive, w przeciwnym razie utracisz informacje o błędzie.
Uwagi dotyczące implementowania
Operacja jest zwracana false
z EndTryReceive(IAsyncResult, Message) wartości, jeśli określona timeout
wartość zostanie przekroczona.