Безопасное создание потока событий - передовая практика

Чтобы вызвать событие, мы используем метод OnEventName вроде этого:

protected virtual void OnSomethingHappened(EventArgs e) 
{
    EventHandler handler = SomethingHappened;
    if (handler != null) 
    {
        handler(this, e);
    }
}

Но в чем разница с этим?

protected virtual void OnSomethingHappened(EventArgs e) 
{
    if (SomethingHappened!= null) 
    {
        SomethingHappened(this, e);
    }
}

Очевидно, первый потокобезопасен, но почему и как?

Нет необходимости начинать новую тему?

38
задан Jérémie Bertrand 9 September 2010 в 08:23
поделиться