IInputChannel.WaitForMessage(TimeSpan) Método

Definición

Devuelve un valor que indica si un mensaje ha llegado dentro de un intervalo de tiempo especificado.

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

Parámetros

timeout
TimeSpan

TimeSpan especifica el intervalo máximo de tiempo para esperar a que llegue un mensaje antes de que se agote el tiempo de espera.

Devoluciones

true es si ha llegado un mensaje antes timeout de que se haya superado; de lo contrario false, es .

Excepciones

El especificado timeout se supera antes de que se complete la operación.

El tiempo de espera especificado es menor que cero.

Ejemplos

En el código siguiente se muestra cómo implementar este método:

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

Comentarios

La llamada WaitForMessage(TimeSpan) no da lugar a que se reciba o procese un mensaje de ninguna otra manera.

El WaitForMessage(TimeSpan) método existe principalmente para escenarios transaccionados en los que el usuario quiere recibir el mensaje mediante una transacción. Cuando se usa normalmente Receive para esto, el usuario debe crear la transacción y, a continuación, llamar Receive a y esperar que el mensaje llegue antes de que se agote el tiempo de espera de la transacción, lo que puede que no sea posible.

En su lugar, el usuario puede llamar WaitForMessage(TimeSpan) con el tiempo de espera que desee (incluso infinito), cuando llegue un mensaje puede abrir la transacción, llamar Receive y estar seguro de que puede recuperar el mensaje antes de que expire la transacción.

Este método es sincrónico, por lo que bloquea el subproceso actual hasta que haya un mensaje disponible o se agote el tiempo de espera. Use WaitForMessage(TimeSpan) cuando sea aceptable que el subproceso actual se bloquee mientras espera a que llegue un mensaje a la cola. El subproceso está bloqueado hasta el especificado timeout. Si necesita que el procesamiento de la aplicación continúe sin esperar, use el método asincrónico BeginWaitForMessage(TimeSpan, AsyncCallback, Object) .

Notas a los implementadores

La operación devuelve false si se supera el especificado timeout , no una excepción de tiempo de espera.

Se aplica a