IInputChannel.WaitForMessage(TimeSpan) Metodo

Definizione

Restituisce un valore che indica se un messaggio è arrivato entro un intervallo di tempo specificato.

public:
 bool WaitForMessage(TimeSpan timeout);
public bool WaitForMessage(TimeSpan timeout);
abstract member WaitForMessage : TimeSpan -> bool
Public Function WaitForMessage (timeout As TimeSpan) As Boolean

Parametri

timeout
TimeSpan

TimeSpan Specifica l'intervallo di tempo massimo di attesa dell'arrivo di un messaggio prima del timeout.

Valori restituiti

true se un messaggio è arrivato prima del superamento di timeout ; in caso contrario false, .

Eccezioni

L'oggetto specificato timeout viene superato prima del completamento dell'operazione.

Il timeout specificato è minore di zero.

Esempio

Il codice seguente illustra come implementare questo metodo:

public bool WaitForMessage(TimeSpan timeout)
{
    return this.InnerChannel.WaitForMessage(timeout);
}

Commenti

La chiamata WaitForMessage(TimeSpan) non comporta la ricezione o l'elaborazione di un messaggio in altro modo.

Il WaitForMessage(TimeSpan) metodo esiste principalmente per gli scenari transazionati in cui l'utente vuole ricevere il messaggio usando una transazione. Quando si usa solo Receive normalmente per questo, l'utente deve creare la transazione e quindi chiamare Receive e sperare che il messaggio arrivi prima del timeout della transazione, che potrebbe non essere possibile.

Al contrario, l'utente può chiamare WaitForMessage(TimeSpan) con qualsiasi timeout desiderato (anche infinito), quindi quando arriva un messaggio può aprire la transazione, chiamare Receive e assicurarsi che possa ottenere di nuovo il messaggio prima della scadenza della transazione.

Questo metodo è sincrono, quindi blocca il thread corrente fino a quando non è disponibile un messaggio o il timeout. Usare WaitForMessage(TimeSpan) quando è accettabile che il thread corrente venga bloccato mentre attende l'arrivo di un messaggio nella coda. Il thread viene bloccato fino all'oggetto specificato timeout. Se è necessario che l'elaborazione dell'applicazione continui senza attendere, usare il metodo asincrono BeginWaitForMessage(TimeSpan, AsyncCallback, Object) .

Note per gli implementatori

L'operazione restituisce false se l'oggetto specificato timeout viene superato, non un'eccezione di timeout.

Si applica a