IInputChannel.TryReceive(TimeSpan, Message) Método

Definição

Tenta 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

Eles IAsyncResult responderam com uma chamada para um dos BeginReceive métodos.

message
Message

O Message recebido.

Devoluções

true se uma mensagem for recebida antes de ter timeout sido ultrapassada; caso contrário false.

Exceções

O especificado timeout é ultrapassado antes da operação ser concluída.

O tempo de espera especificado é inferior a zero.

Exemplos

O seguinte código 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;
}

Observações

Se vais tratar dos tempos mortos e não apenas relançar ou envolver o TimeoutException, então deves chamar TryReceive(TimeSpan, Message) em vez de Receive.

Se não vais tratar os tempos de espera de forma especial, liga, Receivecaso contrário vais perder a informação de erro.

Aplica-se a