IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает асинхронную операцию получения сообщения, с которой связано определенное время ожидания и объект состояния.
public:
IAsyncResult ^ BeginTryReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginTryReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginTryReceive (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- callback
- AsyncCallback
Делегат AsyncCallback, принимающий уведомление о завершении асинхронной операции.
- state
- Object
Задаваемый приложением объект, который содержит сведения о состоянии, связанные с асинхронной операцией.
Возвращаемое значение
Объект IAsyncResult, который ссылается на асинхронную операцию получения.
Исключения
Указанное значение timeout
превышено до завершения операции.
Заданное значение времени ожидания меньше нуля.
Примеры
В следующем примере кода показано, как реализовать этот метод.
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
Комментарии
Если работа приложения должна продолжаться без ожидания, используйте асинхронный метод BeginTryReceive(TimeSpan, AsyncCallback, Object). Если допустима блокировка текущего потока до ответа на сообщение запроса или до истечения времени ожидания, используйте синхронный метод TryReceive(TimeSpan, Message).
Операция остается незавершенной, пока сообщение не станет доступным в канале или пока не истечет время ожидания.
Если необходимо обрабатывать ситуации истечения времени ожидания, а не просто создавать заново или помещать в оболочку исключение TimeoutException, следует вызывать метод BeginTryReceive(TimeSpan, AsyncCallback, Object) вместо метода BeginReceive.
Если нет необходимости специальным образом обрабатывать ситуации истечения времени ожидания, следует вызывать метод BeginReceive, в противном случае будут потеряны сведения об ошибках.
Примечания для тех, кто реализует этот метод
Операция возвращает значение false
в результате вызова метода EndTryReceive(IAsyncResult, Message), если превышено заданное значение timeout
.