title: Raise event thread safely - best practice
body: <p>In order to raise an event we use a method OnEventName like this:</p>
  
  <pre><code>protected virtual void OnSomethingHappened(EventArgs e) 
  {
      EventHandler handler = SomethingHappened;
      if (handler != null) 
      {
          handler(this, e);
      }
  }
  </code></pre>
  
  <p>But what is the difference with this one ?</p>
  
  <pre><code>protected virtual void OnSomethingHappened(EventArgs e) 
  {
      if (SomethingHappened!= null) 
      {
          SomethingHappened(this, e);
      }
  }
  </code></pre>
  
  <p>Apparently the first is thread-safe, but why and how ?</p>
  
  <p>It's not necessary to start a new thread ?</p>