Share via


Programación asincrónica mediante delegados

Actualización: noviembre 2007

Los delegados permiten llamar a métodos sincrónicos de forma asincrónica. Cuando se llama a un delegado sincrónicamente, el método Invoke llama al método de destino directamente en el subproceso actual. Si se llama al método BeginInvoke, Common Language Runtime (CLR) coloca en cola la solicitud y devuelve inmediatamente el control al elemento que lo llamó. El método de destino se llama asincrónicamente desde un subproceso del grupo de subprocesos. El subproceso original, que envió la solicitud, puede 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, el método de devolución de llamada se llama 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.

Nota importante:

Los compiladores deben emitir clases de delegados con los métodos Invoke, BeginInvoke y EndInvoke mediante la firma de delegados que especifique el usuario. Los métodos EndInvoke y BeginInvoke deben representarse como nativos. Debido a que estos métodos están marcados como nativos, Common Language Runtime proporciona automáticamente la implementación en el momento en que se carga la clase. El cargador se asegura de que no se reemplazarán.

En esta sección

Secciones relacionadas

Vea también

Referencia

Delegate