IInputChannel.WaitForMessage(TimeSpan) 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.
Zwraca wartość wskazującą, czy komunikat dotarł do określonego interwału czasu.
public:
bool WaitForMessage(TimeSpan timeout);
public bool WaitForMessage (TimeSpan timeout);
abstract member WaitForMessage : TimeSpan -> bool
Public Function WaitForMessage (timeout As TimeSpan) As Boolean
Parametry
- timeout
- TimeSpan
Określa TimeSpan maksymalny interwał czasu oczekiwania na nadejście komunikatu przed przekroczeniem limitu czasu.
Zwraca
true
jeśli wiadomość została wysłana przed timeout
przekroczeniem, w przeciwnym razie false
.
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 bool WaitForMessage(TimeSpan timeout)
{
return this.InnerChannel.WaitForMessage(timeout);
}
Uwagi
Wywołanie WaitForMessage(TimeSpan) nie powoduje odebrania ani przetworzenia komunikatu w inny sposób.
Metoda WaitForMessage(TimeSpan) istnieje głównie w przypadku scenariuszy transacted, w których użytkownik chce otrzymywać komunikat przy użyciu transakcji. W przypadku używania tylko Receive zwykle w tym celu użytkownik musi utworzyć transakcję, a następnie wywołać Receive i mieć nadzieję, że komunikat pojawi się przed przekroczeniem limitu czasu transakcji, co może być niemożliwe.
Zamiast tego użytkownik może wywołać dowolny WaitForMessage(TimeSpan) limit czasu (nawet nieskończony), a następnie po nadejściu komunikatu może otworzyć transakcję, wywołać Receive i mieć pewność, że może uzyskać komunikat z powrotem przed wygaśnięciem transakcji.
Ta metoda jest synchroniczna, dlatego blokuje bieżący wątek do momentu udostępnienia komunikatu lub przekroczenia limitu czasu. Użyj WaitForMessage(TimeSpan) polecenia , gdy jest to dopuszczalne, aby bieżący wątek był blokowany podczas oczekiwania na przybycie komunikatu do kolejki. Wątek jest blokowany do określonego timeout
elementu . Jeśli potrzebujesz przetwarzania aplikacji, aby kontynuować bez oczekiwania, użyj metody asynchronicznej BeginWaitForMessage(TimeSpan, AsyncCallback, Object) .
Uwagi dotyczące implementowania
Operacja zwraca wartość false
, jeśli określona timeout
wartość jest przekroczona, a nie wyjątek przekroczenia limitu czasu.