IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicia uma operação assíncrona para receber uma mensagem que tenha um time out e um objeto de estado especificados associados.
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 esperar que uma mensagem se torne 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 pela aplicação, que contém informação de estado associada à operação assíncrona.
Devoluções
O IAsyncResult que faz referência à operação de receção assíncrona.
Exceções
O especificado timeout é ultrapassado antes da operação ser concluída.
O tempo de espera especificado é inferior a zero.
Exemplos
O seguinte código 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;
}
Observações
Use o método assíncrono BeginTryReceive(TimeSpan, AsyncCallback, Object) quando quiser que o processamento da aplicação continue sem esperar. Use o método síncrono TryReceive(TimeSpan, Message) quando for aceitável que a thread atual seja bloqueada enquanto responde à mensagem de pedido ou até que o intervalo de tempo expirado seja ultrapassado.
A operação não está concluída até que uma mensagem esteja disponível no canal ou ocorra o timeout.
Se vais tratar dos tempos mortos e não apenas relançar ou envolver o TimeoutException, então deves chamar BeginTryReceive(TimeSpan, AsyncCallback, Object) em vez de BeginReceive.
Se não vais tratar os tempos de espera de forma especial, liga, BeginReceivecaso contrário perdes informação de erro.
Notas para Implementadores
A operação retorna false de EndTryReceive(IAsyncResult, Message) se o especificado timeout for excedido.