Condividi tramite


IInputChannel.WaitForMessage(TimeSpan) Metodo

Definizione

Restituisce un valore che indica se un messaggio è arrivato entro l'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 di attesa massimo per l'arrivo di un messaggio prima della scadenza.

Restituisce

Boolean

true se un messaggio arriva prima che il timeout sia scaduto. In caso contrario false.

Eccezioni

Il timeout specificato è stato superato prima del completamento dell'operazione.

Il timeout specificato è minore di zero.

Esempio

Nell'esempio di codice seguente viene illustrato come implementare questo metodo:

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

Commenti

La chiamata a WaitForMessage(TimeSpan) non comporta la ricezione o l'elaborazione di un messaggio in nessun'altra modalità.

Il metodo WaitForMessage(TimeSpan) esiste principalmente per gli scenari di transazione in cui l'utente desidera ricevere il messaggio utilizzando una transazione. In caso del semplice utilizzo di Receive, l'utente deve creare la transazione e quindi chiamare Receive e sperare che il messaggio arrivi prima del timeout della transazione, il che potrebbe non avvenire.

In alternativa, l'utente può chiamare WaitForMessage(TimeSpan) con il timeout desiderato (anche infinito), quindi all'arrivo di un messaggio, può aprire la transazione, chiamare Receive e avere la certezza di riavere il messaggio prima che la transazione scada.

Poiché il metodo è sincrono, blocca il thread corrente finché non viene reso disponibile un messaggio o non si verifica il timeout. Utilizzare il metodo WaitForMessage(TimeSpan) quando è possibile bloccare il thread corrente durante l'attesa dell'arrivo di un messaggio nella coda. Il thread è bloccato fino al timeout specificato. Se si desidera che l'elaborazione dell'applicazione continui senza attendere, utilizzare il metodo asincrono BeginWaitForMessage(TimeSpan, AsyncCallback, Object).

Note per gli implementatori

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

Si applica a