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.
Возвращаемое значение
Значение 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, в противном случае будут потеряны сведения об ошибках.