Definição – O que significa Chamada de Método Assíncrono?
Uma chamada de método assíncrona é um método usado na programação .NET que retorna ao chamador imediatamente antes da conclusão de seu processamento e sem bloquear o thread de chamada.
Quando um aplicativo chama um método assíncrono, ele pode ser executado simultaneamente junto com a execução do método assíncrono que realiza sua tarefa. Um método assíncrono é executado em um thread separado do thread principal do aplicativo. Os resultados do processamento são obtidos por meio de outra chamada em outro encadeamento.
Métodos assíncronos ajudam a otimizar a execução de recursos, resultando em aplicativos escalonáveis. Eles são usados para executar tarefas demoradas, como abrir arquivos grandes, conectar-se a computadores remotos, consultar um banco de dados, chamar serviços da Web e formulários da Web ASP.NET.
A chamada de método assíncrono também pode ser referida como invocação de método assíncrono (AMI).
Definirtec explica chamada de método assíncrono
O método assíncrono difere do método síncrono na maneira como retorna da chamada. Enquanto uma chamada de método assíncrona retorna imediatamente, permitindo que o programa de chamada execute outras operações, as chamadas de método síncronas esperam que o método seja concluído antes de continuar com o fluxo do programa.
O .NET framework tem infraestrutura assíncrona embutida para que qualquer método possa ser invocado de forma assíncrona sem alterar seu código.
O .NET framework fornece dois padrões de design para implementar o método assíncrono, que são aqueles que usam delegados assíncronos (objetos IASyncResult) e eventos. O padrão de delegados assíncronos é mais complexo e fornece flexibilidade, o que o torna adequado para vários modelos de programação complexos. O modelo baseado em eventos é simples e deve ser usado na maioria dos casos.
No padrão de delegados assíncronos, um objeto de delegado usa dois métodos: BeginInvoke e EndInvoke. BeginInvoke tem uma lista de parâmetros, que são semelhantes à sua função agrupada, junto com dois parâmetros opcionais adicionais; ele retorna o objeto IAsyncResult. EndInvoke retorna dois parâmetros (out e ref type) junto com o objeto IAsyncResult. BeginInvoke é usado para iniciar a chamada assíncrona, enquanto EndInvoke é usado para recuperar os resultados da chamada assíncrona.
Os padrões assíncronos baseados em eventos usam uma classe que possui um ou mais métodos, denominados MethodNameAsync, que possuem versões síncronas correspondentes que são executadas no thread atual. Os padrões baseados em eventos também podem ter um evento MethodNameCompleted e um método MethodNameAsyncCancel. Esse padrão permite que a classe se comunique com operações assíncronas pendentes usando o modelo de evento delegado.
A seguir estão algumas dicas relacionadas aos métodos assíncronos:
- Para alta simultaneidade, métodos assíncronos devem ser evitados
- É preciso ter cuidado ao passar referências de objetos compartilhados
- EndXXX (chamado no final de uma operação assíncrona) deve ser chamado para relançar exceções e evitar falha
- Ao capturar e salvar todos os objetos de exceção no método assíncrono, ele pode ser relançado durante a chamada EndXXX
- Os controles na interface do usuário que iniciam operações assíncronas de longa duração devem ser desativados se forem necessários apenas para esse fim
- Os métodos assíncronos devem ser implementados com uma compreensão de multithreading e onde eles provam ser mais eficientes do que o uso de métodos síncronos.