В MSDN я нашел следующее:
public event EventHandler<MyEventArgs> SampleEvent;
public void DemoEvent(string val)
{
// Copy to a temporary variable to be thread-safe.
EventHandler<MyEventArgs> temp = SampleEvent;
Это ссылка?
Если это так, я не понимаю его значения, как когда SampleEvent стал нулевым, так и temp
if (temp != null)
temp(this, new MyEventArgs(val));
}