Índice:
- Definição - O que significa Chamada de método assíncrona?
- Techopedia explica chamada de método assíncrona
Definição - O que significa Chamada de método assíncrona?
Uma chamada de método assíncrona é um método usado na programação .NET que retorna ao chamador imediatamente antes da conclusão do seu processamento e sem bloquear o segmento de chamada.
Quando um aplicativo chama um método assíncrono, ele pode ser executado simultaneamente com a execução do método assíncrono que executa sua tarefa. Um método assíncrono é executado em um segmento separado do segmento principal do aplicativo. Os resultados do processamento são buscados por outra chamada em outro encadeamento.
Métodos assíncronos ajudam a otimizar a execução de recursos, resultando em aplicativos escalá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 do ASP.NET.
A chamada de método assíncrona também pode ser chamada de AMI (assíncrona de método).
Techopedia explica chamada de método assíncrona
O método assíncrono difere do método síncrono da maneira como ele 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 aguardam a conclusão do método antes de continuar com o fluxo do programa.
A estrutura .NET possui infraestrutura assíncrona incorporada para que qualquer método possa ser chamado 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 dos delegados assíncronos é mais complexo e oferece flexibilidade, o que o torna adequado para vários modelos de programação complexos. O modelo baseado em evento é 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 possui uma lista de parâmetros semelhantes à sua função agrupada, além de dois parâmetros opcionais adicionais; retorna o objeto IAsyncResult. EndInvoke retorna dois parâmetros (tipo out e ref) 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 o 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, algumas dicas relacionadas aos métodos assíncronos:
- Para alta simultaneidade, métodos assíncronos devem ser evitados
- É necessário tomar cuidado ao passar referências de objetos compartilhados
- EndXXX (chamado no final de uma operação assíncrona) deve ser chamado para repetir exceções e evitar falhas
- Ao capturar e salvar todos os objetos de exceção no método assíncrono, ele pode ser repetido novamente durante a chamada EndXXX
- Os controles na interface do usuário que iniciam operações assíncronas de longa execução precisam ser desativados se forem necessários apenas para esse fim.
- Métodos assíncronos devem ser implementados com o entendimento de multithreading e onde eles provam ser mais eficientes do que usar métodos síncronos.