Я просто читал страницу о событиях в MSDN, и я натолкнулся на фрагмент кода примера, который озадачивает меня.
Код, о котором идет речь, такой:
// Make a temporary copy of the event to avoid possibility of
// a race condition if the last subscriber unsubscribes
// immediately after the null check and before the event is raised.
EventHandler<CustomEventArgs> handler = RaiseCustomEvent;
Я понимаю намерения кода, но я не вижу, как именно эта строка делает копию чего-либо. Все, что он делает, это копирует ссылку ; на самом деле он не делает глубокую копию экземпляра делегата. Таким образом, на самом деле это вовсе не мешает состоянию гонки.
Я что-то упускаю здесь очевидное?