title: Design pattern for asynchronous calls in C#
body: <p>I'm designing a desktop application with multiple layers: the GUI layer (WinForms MVP) holds references to interfaces of adapter classes, and these adapters call BL classes that do the actual work.</p>
  
  <p>Apart from executing requests from the GUI, the BL also fires some events that the GUI can subscribe to through the interfaces. For example, there's a <code>CurrentTime</code> object in the BL that changes periodically and the GUI should reflect the changes.</p>
  
  <p>There are two issues that involve multithreading: </p>
  
  <ol>
  <li>I need to make some of the logic
  calls asynchronous so that they don't block the GUI. </li>
  <li>Some of the events the GUI recevies are fired from non-GUI threads.</li>
  </ol>
  
  <p>At what level is it best to handle the multithreading? My intuition says that the Presenter is the most suitable for that, am I right? Can you give me some example application that does what I need? And does it make sense for the presenter to hold a reference to the form so it can invoke delegates on it?</p>
  
  <p><strong>EDIT:</strong> The bounty will probably go to Henrik, unless someone gives an even better answer.</p>