Llamada al método asincrónico

Definición: ¿Qué significa Llamada a método asincrónico?

Una llamada a un método asincrónico es un método utilizado en la programación .NET que regresa a la persona que llama inmediatamente antes de completar su procesamiento y sin bloquear el hilo de llamada.

Cuando una aplicación llama a un método asincrónico, se puede ejecutar simultáneamente junto con la ejecución del método asincrónico que realiza su tarea. Un método asincrónico se ejecuta en un hilo separado del hilo principal de la aplicación. Los resultados del procesamiento se obtienen a través de otra llamada en otro hilo.

Los métodos asincrónicos ayudan a optimizar la ejecución de recursos, lo que da como resultado una aplicación escalable. Estos se utilizan para ejecutar tareas que requieren mucho tiempo, como abrir archivos grandes, conectarse a computadoras remotas, consultar una base de datos, llamar a servicios web y formularios web ASP.NET.

La llamada de método asincrónico también puede denominarse invocación de método asincrónico (AMI).

Techinfo explica la llamada al método asincrónico

El método asincrónico se diferencia del método síncrono en la forma en que regresa de la llamada. Mientras que una llamada a un método asincrónico regresa inmediatamente, lo que permite que el programa que realiza la llamada realice otras operaciones, las llamadas a un método sincrónico esperan a que el método se complete antes de continuar con el flujo del programa.

El marco .NET tiene una infraestructura asincrónica incorporada para que cualquier método se pueda invocar de forma asincrónica sin alterar su código.

.NET Framework proporciona dos patrones de diseño para implementar el método asincrónico, que son los que usan delegados asincrónicos (objetos IASyncResult) y eventos. El patrón de delegados asincrónicos es más complejo y proporciona flexibilidad, lo que lo hace adecuado para varios modelos de programación complejos. El modelo basado en eventos es simple y debe usarse en la mayoría de los casos.

En el patrón de delegados asincrónicos, un objeto delegado utiliza dos métodos: BeginInvoke y EndInvoke. BeginInvoke tiene una lista de parámetros, que son similares a su función envuelta, junto con dos parámetros opcionales adicionales; devuelve el objeto IAsyncResult. EndInvoke devuelve dos parámetros (out y ref type) junto con el objeto IAsyncResult. BeginInvoke se utiliza para iniciar la llamada asincrónica, mientras que EndInvoke se utiliza para recuperar los resultados de la llamada asincrónica.

Los patrones asincrónicos basados ​​en eventos usan una clase que tiene uno o más métodos, denominados MethodNameAsync, que tienen versiones sincrónicas correspondientes que se ejecutan en el hilo actual. Los patrones basados ​​en eventos también pueden tener un evento MethodNameCompleted y un método MethodNameAsyncCancel. Este patrón permite que la clase se comunique con operaciones asincrónicas pendientes mediante el modelo de eventos delegados.

Los siguientes son algunos consejos relacionados con los métodos asincrónicos:

  • Para una alta concurrencia, deben evitarse los métodos asincrónicos
  • Se debe tener cuidado al pasar referencias de objetos compartidos
  • EndXXX (llamado al final de una operación asincrónica) debe ser llamado para volver a generar excepciones y evitar fallas
  • Al capturar y guardar todos los objetos de excepción en el método asincrónico, se puede volver a lanzar durante la llamada a EndXXX
  • Los controles en la interfaz de usuario que inician operaciones asincrónicas de larga ejecución deben desactivarse si solo son necesarios para ese propósito
  • Los métodos asincrónicos deben implementarse con un conocimiento del subproceso múltiple y donde demuestran ser más eficientes que el uso de métodos síncronos.