Me encontré con esta pregunta en una prueba de práctica de Microsoft y me confundí. Aquí está la pregunta:Levante un evento en C#
¿Cuál de las muestras de código siguiente de C# es la forma correcta de generar un evento, suponiendo que el evento de alarma, la clase AlarmEventArgs, y el delegado AlarmEventHandler han sido declarada?
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);
}
Personalmente, utilizo siempre el segundo método. Funciona bien. ¿Puede alguien decirme por qué debería usar el primer método en lugar de segundo?
posible duplicado de [Comprobación de nulo antes de despachar el evento ... ¿es seguro para las subprocesos?] (Http://stackoverflow.com/questions/282653/checking-for-null-before-event-dispatching-thread-safe) – doppelgreener