Compartilhar via


IInputChannel.TryReceive(TimeSpan, Message) Método

Definição

Tentar receber uma mensagem dentro de um intervalo de tempo 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

O IAsyncResult retornado por uma chamada para um dos métodos BeginReceive.

message
Message

O Message recebido.

Retornos

Boolean

true se uma mensagem for recebida antes que o timeout seja excedido; caso contrário false.

Exceções

O timeout especificado é ultrapassado antes que a operação seja concluída.

O tempo limite especificado é menor que zero.

Exemplos

O código a seguir ilustra como 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;
}

Comentários

Se você vai lidar com tempos limite e não apenas re-lançar ou encapsular, TimeoutExceptionentão você deve chamar TryReceive(TimeSpan, Message) em vez de Receive.

Se você não for tratar os tempos limite especialmente, basta ligar Receive, caso contrário, perderá as informações de erro.

Aplica-se a