Compartir a través de


Programación asincrónica con delegados

Los delegados permiten llamar a métodos sincrónicos de forma asincrónica. Cuando se llama a un delegado de forma sincrónica, el Invoke método llama al método de destino directamente en el subproceso actual. Si se llama al método BeginInvoke, el Common Language Runtime (CLR) pone en cola la solicitud y devuelve inmediatamente al llamador. El método de destino se llama asincrónicamente desde un subproceso del grupo de subprocesos. El hilo original, que presentó la solicitud, es libre de continuar ejecutándose en paralelo con el método de destino. Si se ha especificado un método de devolución de llamada en la llamada al método BeginInvoke, se invoca el método de devolución de llamada cuando finaliza el método de destino. En el método de devolución de llamada, el método EndInvoke obtiene el valor devuelto y cualquier parámetro de entrada y salida o de solo salida. Si no se especifica ningún método de devolución de llamada al llamar a BeginInvoke, se puede llamar a EndInvoke desde el subproceso que llamó a BeginInvoke.

Importante

Los compiladores deben emitir clases delegadas con los métodos Invoke, BeginInvoke y EndInvoke mediante la firma de delegado especificada por el usuario. Los métodos BeginInvoke y EndInvoke deben representarse como nativos. Dado que estos métodos se marcan como nativos, la CLR proporciona automáticamente la implementación en tiempo de carga de la clase. El cargador se asegura de que no se reemplazarán.

En esta sección

Llamada a métodos sincrónicos de forma asincrónica
Describe el uso de delegados para realizar llamadas asincrónicas a métodos normales y proporciona ejemplos de código sencillos que muestran las cuatro maneras de esperar a que se devuelva una llamada asincrónica.

Modelo asincrónico basado en eventos (EAP)
Describe la programación asincrónica en .NET.

Consulte también