Compartir a través de


Eventos y devoluciones de llamada

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.

Considere la posibilidad de utilizar devoluciones de llamada para permitir a los usuarios proporcionar código personalizado que va a ejecutar el marco de trabajo.

Considere la posibilidad de usar eventos para permitirles a los usuarios personalizar el comportamiento de un marco de trabajo sin la necesidad de que los usuarios comprendan la orientación a objetos.

Los eventos son preferibles a las devoluciones de llamada normales, ya que resultan más familiares para un grupo más amplio de desarrolladores y están integrados en la finalización de instrucciones de Visual Studio.

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 “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados por Addison-Wesley, 2005.

Vea también

Otros recursos

Diseñar extensibilidad

Instrucciones de diseño para desarrollar bibliotecas de clases