Поделиться через


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

Параметры

timeout
TimeSpan

Объект TimeSpan, который задает время ожидания доступного сообщения.

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.

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