IInputChannel.TryReceive(TimeSpan, Message) Метод

Определение

Пытается получить сообщение в течение заданного промежутка времени.

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

Параметры

timeout
TimeSpan

Объект IAsyncResult, возвращенный вызовом одного из методов BeginReceive.

message
Message

Полученное сообщение Message.

Возвращаемое значение

Boolean

Значение true, если сообщение получено до превышения времени, заданного параметром timeout; в противном случае — false.

Исключения

Указанное значение timeout превышено до завершения операции.

Заданное значение времени ожидания меньше нуля.

Примеры

В следующем примере кода показано, как реализовать этот метод.

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;
}

Комментарии

Если необходимо обрабатывать ситуации истечения времени ожидания, а не просто создавать заново или помещать в оболочку исключение TimeoutException, следует вызывать метод TryReceive(TimeSpan, Message) вместо метода Receive.

Если нет необходимости специальным образом обрабатывать ситуации истечения времени ожидания, следует вызывать метод Receive, в противном случае будут потеряны сведения об ошибках.

Применяется к