Język

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

Parametr TimeSpan określa maksymalny interwał czasu oczekiwania na nadejście komunikatu przed przekroczeniem limitu czasu.

Zwraca

true jeśli komunikat został dostarczony przed przekroczeniem timeout ; w przeciwnym razie false.

Wyjątki

timeout Określony parametr zostanie przekroczony przed ukończeniem operacji.

Określony limit czasu jest mniejszy niż zero.

Przykłady

Poniższy kod ilustruje sposób implementacji 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 transakcyjnych, w których użytkownik chce otrzymywać komunikat przy użyciu transakcji. W przypadku używania tego polecenia zwykle Receive użytkownik musi utworzyć transakcję, a następnie wywołać Receive i mieć nadzieję, że komunikat pojawi się przed upływem limitu czasu transakcji, co może nie być możliwe.

Zamiast tego użytkownik może wywołać WaitForMessage(TimeSpan) dowolny limit czasu (nawet nieskończony), a następnie po odebraniu 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 bieżący wątek jest akceptowalny, aby był blokowany podczas oczekiwania na nadejście 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) .

Notatki dotyczące implementowania

Operacja zwraca false wartość, jeśli określona timeout wartość jest przekroczona, a nie wyjątek limitu czasu.

Dotyczy