title: What's the difference between InvokeAsync and BeginInvoke for WPF Dispatcher
body: <p>I noticed in .NET 4.5 that the <a href="http://msdn.microsoft.com/en-us/library/ms615907.aspx" rel="noreferrer">WPF Dispatcher</a> had gotten a new set of methods to execute stuff on the Dispatcher's thread called <a href="http://msdn.microsoft.com/en-us/library/hh199387.aspx" rel="noreferrer">InvokeAsync</a>. Before, .NET 4.5 we had <a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke%28v=vs.100%29.aspx" rel="noreferrer">Invoke</a> and <a href="http://msdn.microsoft.com/en-us/library/ms604730%28v=vs.100%29.aspx" rel="noreferrer">BeginInvoke</a> which handled this syncronously and asynchronously respectively.</p>
  
  <p>Besides the naming and the slightly different overloads available, are there any major differences between the <code>BeginInvoke</code> and the <code>InvokeAsync</code> methods? </p>
  
  <p>Oh, and I already checked, both can be <code>await</code>ed:</p>
  
  <pre><code>private async Task RunStuffOnUiThread(Action action)
  {
      // both of these works fine
      await dispatcher.BeginInvoke(action);
      await dispatcher.InvokeAsync(action);
  }
  </code></pre>