title: Trying to understand how this is being called on the UI Thread
body: <p>I am work my way through different open source projects to get a feel for how people approach the same problem in different ways. This time it's Event Aggregators, specifically Caliburn.Micro's one.</p>
  
  <p>I notice that Rob said that if no thread is supplied that the EA will marshal to the UI thread. The line specifically is:</p>
  
  <pre><code>public static Action&lt;System.Action&gt; 
  DefaultPublicationThreadMarshaller = action =&gt; action();
  </code></pre>
  
  <p>and then further on:</p>
  
  <pre><code>marshal(() =&gt;
           {
             *SNIP*
           });
  </code></pre>
  
  <p>What I don't understand his how can you say this will be called on the UI thread, are all actions called on the UI thread unless you specify one that is not? (You can specify which action is called btw, the line above is just if no action is supplied).</p>