Compartir a través de


IInputChannel.TryReceive(TimeSpan, Message) Método

Definición

Intenta recibir un mensaje dentro de un intervalo de tiempo especificado.

public:
 bool TryReceive(TimeSpan timeout, [Runtime::InteropServices::Out] System::ServiceModel::Channels::Message ^ % message);
public bool TryReceive (TimeSpan timeout, out System.ServiceModel.Channels.Message message);
abstract member TryReceive : TimeSpan * Message -> bool
Public Function TryReceive (timeout As TimeSpan, ByRef message As Message) As Boolean

Parámetros

timeout
TimeSpan

IAsyncResult devuelto por una llamada a uno de los métodos BeginReceive.

message
Message

Message recibido.

Devoluciones

true si se recibe un mensaje antes de que se haya superado timeout; de lo contrario false.

Excepciones

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

El tiempo de espera especificado es menor que cero.

Ejemplos

El código siguiente muestra cómo implementar este método:

public bool TryReceive(TimeSpan timeout, out Message message)
{
    bool result;
    while (true)
    {
        result = this.InnerChannel.TryReceive(timeout, out message);
        if (ProcessReceivedMessage(ref message))
        {
            break;
        }
    }

    return result;
}

Comentarios

Si va a administrar los tiempos de espera y no sólo reiniciar o encapsular TimeoutException, debería llamar a TryReceive(TimeSpan, Message) en lugar de Receive.

Si no va a tratar especialmente los tiempos de espera, llame a Receive, de lo contrario perderá información de error.

Se aplica a