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
Llamar a métodos sincrónicos de forma asincrónica
Describe el uso de los delegados para realizar llamadas asincrónicas a métodos ordinarios y proporciona ejemplos de código sencillos en los que se muestran los cuatro mecanismos que existen para esperar a que una llamada asincrónica devuelva datos.Ejemplo de programación de delegados asincrónicos
Explica el uso de delegados para realizar llamadas asincrónicas en un ejemplo de código más complejo, en el que se factorizan números.
Secciones relacionadas
- Modelos de diseño para la programación asincrónica
Describe la programación asincrónica con .NET Framework.