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

Definição

Inicia uma operação assíncrona para receber uma mensagem que tem um tempo limite especificado e um objeto de estado associado a ela.

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

O TimeSpan que especifica o intervalo de tempo para aguardar que uma mensagem fique disponível.

callback
AsyncCallback

O AsyncCallback delegado que recebe a notificação da conclusão da operação assíncrona.

state
Object

Um objeto, especificado pelo aplicativo, que contém informações de estado associadas à operação assíncrona.

Retornos

O IAsyncResult que faz referência à operação de recebimento assíncrono.

Exceções

O especificado timeout é excedido antes da conclusão da operação.

O tempo limite especificado é menor que zero.

Exemplos

O código a seguir ilustra como 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;
}

Comentários

Use o método assíncrono BeginTryReceive(TimeSpan, AsyncCallback, Object) quando quiser que o processamento do aplicativo continue sem esperar. Use o método síncrono TryReceive(TimeSpan, Message) quando for aceitável que o thread atual seja bloqueado enquanto ele responde à mensagem de solicitação ou até que o intervalo de tempo limite seja excedido.

A operação não é concluída até que uma mensagem fique disponível no canal ou o tempo limite ocorra.

Se você vai lidar com tempos limite e não apenas re-lançar ou encapsular, TimeoutExceptionentão você deve ligar BeginTryReceive(TimeSpan, AsyncCallback, Object) em vez de BeginReceive.

Se você não for tratar os tempos limite especialmente, basta ligar BeginReceive, caso contrário, você perderá informações de erro.

Notas aos Implementadores

A operação retornará false de EndTryReceive(IAsyncResult, Message) se o especificado timeout for excedido.

Aplica-se a