Udostępnij za pośrednictwem


IInputChannel.WaitForMessage(TimeSpan) Metoda

Definicja

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

Boolean

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 timeoutelementu . 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.

Dotyczy