Compartir a través de


IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Método

Definición

Comienza una operación asincrónica para recibir un mensaje que tiene un tiempo de espera especificado y un objeto de estados asociados a él.

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

Parámetros

timeout
TimeSpan

TimeSpan que especifica el intervalo de tiempo que hay que esperar a que haya un mensaje disponible.

callback
AsyncCallback

El delegado AsyncCallback que recibe la notificación de la finalización de la operación asincrónica.

state
Object

Objeto, especificado por la aplicación, que contiene información de estado asociada a la operación asincrónica.

Devoluciones

IAsyncResult que hace referencia a la operación de recepción asincrónica.

Excepciones

Se supera el timeout especificado antes de que se complete la operación.

El tiempo de espera especificado es menor que cero.

Ejemplos

El código siguiente muestra cómo implementar este método:

public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
    TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
    result.Begin();
    return result;
}

Comentarios

Si desea que la aplicación siga realizando sus procesos sin esperar, hay que utilizar el método asincrónico BeginTryReceive(TimeSpan, AsyncCallback, Object). Utilice el método TryReceive(TimeSpan, Message) sincrónico cuando sea aceptable bloquear el subproceso actual mientras este responde al mensaje de solicitud o hasta que se supere el intervalo del tiempo de espera.

La operación no se completa hasta que haya un mensaje disponible en el canal o se agote el tiempo de espera.

Si va a administrar los tiempos de espera y no sólo reiniciar o encapsular TimeoutException, debería llamar a BeginTryReceive(TimeSpan, AsyncCallback, Object) en lugar de BeginReceive.

Si no va a tratar especialmente los tiempos de espera, llame a BeginReceive, de lo contrario perderá información de error.

Notas a los implementadores

La operación devuelve false de EndTryReceive(IAsyncResult, Message) si se supera el timeout especificado.

Se aplica a