IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicia una operación asincrónica para recibir un mensaje que tiene un tiempo de espera y un objeto de estado especificado asociado 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 para esperar a que un mensaje esté disponible.
- callback
- AsyncCallback
AsyncCallback Delegado 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
El especificado timeout se supera antes de que se complete la operación.
El tiempo de espera especificado es menor que cero.
Ejemplos
En el código siguiente se 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
Use el método asincrónico BeginTryReceive(TimeSpan, AsyncCallback, Object) cuando desee que el procesamiento de la aplicación continúe sin esperar. Use el método sincrónico TryReceive(TimeSpan, Message) cuando sea aceptable que el subproceso actual se bloquee mientras responde al mensaje de solicitud o hasta que se supere el intervalo de tiempo de espera.
La operación no se completa hasta que un mensaje esté disponible en el canal o se produzca el tiempo de espera.
Si va a controlar los tiempos de espera y no solo volver a iniciar o encapsular TimeoutException, debe llamar a BeginTryReceive(TimeSpan, AsyncCallback, Object) en lugar de BeginReceive.
Si no va a tratar los tiempos de espera especialmente, simplemente 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 especificado timeout .