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 BeginReceive métodos.

message
Message

El Message objeto recibido.

Devoluciones

true es si se recibe 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 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 controlar los tiempos de espera y no solo volver a iniciar o encapsular TimeoutException, debe llamar a TryReceive(TimeSpan, Message) en lugar de Receive.

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

Se aplica a