Share via


Eventos y devoluciones de llamada

Actualización: noviembre 2007

Un método de devolución de llamada es un método es invocado automáticamente por un delegado cuando finaliza una operación o actividad. Por ejemplo, uno de los modelos de diseño asincrónicos utiliza delegados AsyncCallback para especificar el código que se ejecuta cuando finaliza una operación asincrónica. Este modelo de diseño se utiliza en el método BeginWrite, que utiliza una devolución de llamada para procesar los resultados de una operación de escritura asincrónica.

Los eventos son mecanismos similares a las devoluciones de llamada. Permiten al código especificado por el usuario ejecutarse en condiciones concretas, implicando normalmente un cambio de estado o el inicio o fin de una actividad. Los eventos son más fáciles de utilizar que las devoluciones de llamada porque la sintaxis del lenguaje y herramientas proporcionan una experiencia de codificación uniforme para reconocer y controlar los eventos. Además, los eventos se controlan mediante delegados, denominados controladores de eventos, que tienen un modelo de firma bien determinado. Para obtener más información sobre los eventos, vea Diseño de eventos.

Las instrucciones siguientes ayudan a garantizar que su diseño de biblioteca utiliza eventos y devoluciones de llamada según los procedimientos recomendados.

Evite utilizar devoluciones de llamada en interfaces API en las que el rendimiento es importante.

Aunque las devoluciones de llamada y los eventos son más fáciles de comprender y usar para muchos desarrolladores, son menos deseables que Miembros virtuales desde el punto de vista del rendimiento y el consumo de memoria.

Tenga en cuenta que al llamar a un delegado, estará ejecutando código arbitrario, que podría tener repercusiones de seguridad, exactitud y compatibilidad.

Los eventos y devoluciones de llamada permiten ejecutar código arbitrario en el contexto de Common Language Runtime (CLR). Sus revisiones de código y de seguridad deberían examinar cuidadosamente estos puntos de extensibilidad para identificar las vulnerabilidades de seguridad.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Otros recursos

Diseñar extensibilidad

Instrucciones de diseño para desarrollar bibliotecas de clases