referencia - que significa c#
Levanta un evento en C# (2)
En un entorno de subprocesos múltiples, es posible que el controlador de eventos pueda actualizarse mientras se envía su evento. Para evitar este escenario, asigne el controlador a una variable local antes de verificar el valor nulo y enviar el mensaje.
Me encontré con esta pregunta en un examen de práctica de Microsoft y me confundí. Aquí está la pregunta:
¿Cuál de los siguientes ejemplos de código de C # es la forma correcta de generar un evento, suponiendo que el evento Alarm, la clase AlarmEventArgs y el delegado AlarmEventHandler hayan sido declarados?
Aquí está la respuesta "correcta" que proporcionaron:
AlarmEventArgs e = new AlarmEventArgs(1, 2);
AlarmEventHandler handler = Alarm;
if (handler != null)
{
handler(this, e);
}
Sin embargo, también hay otra respuesta que parece correcta.
AlarmEventArgs e = new AlarmEventArgs(1, 2);
if (Alarm!= null)
{
Alarm (this, e);
}
Yo personalmente, siempre uso el segundo método. Funciona bien ¿Puede alguien decirme por qué debería usar el primer método en lugar del segundo?
Hice una pregunta similar. La respuesta aceptada es una buena explicación.
Comprobando si hay nulos antes del envío del evento ... ¿es seguro el hilo?