title: Invoke() is blocking
body: <p>From time to time my applications GUI stops redrawing.
  There a lot of threads that are firing all kinds of events (like timers or network data ready etc.). Also there are a lot of controls that are subscribing these events. Because of that, all the event handlers play the InvokeRequired/Invoke game.
  Now I figured out that when the GUI freezes a lot of threads are waiting for Invoke() to return. Looks like the message pump stopped pumping.
  The handlers look like this:</p>
  
  <pre><code>private void MyEventHandler( object sender, EventArgs e ) {
      if ( InvokeRequired ) {
          Invoke( new EventHandler( MyEventHandler ), sender, e );
          return;
      }
  
      SetSomeStateVariable();
      Invalidate();
  }
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p>Solution: BeginInvoke(). Looks like you should always use BeginInvoke() if you have lots of CrossThread-Events...</p>
  
  <p>Thanks.</p>
  
  <p>Thanks everybody.</p>
  
  <p><strong>EDIT:</strong> Looks like <code>BeginInvoke()</code> really solved it. No freezing until now.</p>