[C#] ¿los eventos C # son sincrónicos?


Answers

Esta es una respuesta general y refleja el comportamiento predeterminado:

  1. Sí, bloquea el hilo, si los métodos que se suscriben al evento no son asincrónicos.
  2. Se ejecutan uno después del otro. Esto tiene otro giro: si un manejador de eventos arroja una excepción, los manejadores de eventos aún no ejecutados no se ejecutarán.

Una vez dicho esto, cada clase que ofrece eventos puede elegir implementar su evento de forma asincrónica. IDesign proporciona una clase llamada EventsHelper que simplifica esto.

[Nota] Este enlace requiere que proporciones una dirección de correo electrónico para descargar la clase EventsHelper.

Question

Hay dos partes en esta pregunta:

  1. ¿El bloqueo de un evento bloquea el hilo, o inicia la ejecución de EventHandlers de forma asíncrona y el hilo continúa continúa al mismo tiempo?

  2. ¿Los EventHandlers individuales (suscritos al evento) se ejecutan de forma síncrona uno tras otro, o se ejecutan de forma asincrónica sin garantía de que otros no se estén ejecutando al mismo tiempo?




Los eventos en C # se ejecutan sincrónicamente (en ambos casos), siempre que no se inicie manualmente un segundo subproceso.




Los eventos son solo arreglos de delegados. Siempre que la llamada delegada sea sincrónica, los eventos también son sincrónicos.






Links