title: can't get ContinueWhenAll to execute in UI thread
body: <p>The following is operating with a C# winforms application in .net 4.0</p>
  
  <p>I have a list of tasks that execute in parallel. Once their execution is complete, there's a block of code I want to execute (relates to post-process validation). If any of the tasks fail, I want the exception to flow up the call stack to the UI level (I have a global exception handler that needs to be invoked).</p>
  
  <p>I understand that ContinueWhenAll is not a blocking method. I also know that ContinueWhenAll is kicking off a new task.  But I can't seem to make this task run in the same thread as the UI.
  The exception is visible when running as Debug. But without debugging, the Continue'd task fails in its own thread and the exception goes unhandled and is lost.</p>
  
  <p>I think my use of <b>TaskContinuationOptions.ExecuteSynchronously</B> is the cause (MSDN <i>"the continuation will be run on the same thread that causes the antecedent task to transition into its final state"</i>).  Is there anyway I can force execution on the UI thread? Or am I using the wrong tool for the job?</p>
  
  <pre><code>//Being called in the UI thread
  var tasks = new List&lt;Task&gt;();
  foreach (var item in workList)
  {
     tasks.Add(item.DoWorkAsync);
  }
  var context = TaskScheduler.FromCurrentSynchronizationContext();
  Task.Factory.ContinueWhenAll(tasks.ToArray(), LoadComplete, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, context); 
  
  ...
  
  private void LoadComplete(Task[] tasks)
  {
      var errors = (from t in tasks where t.Exception != null select t.Exception);
      if (errors.Count() &gt; 0)
              throw new AggregateException(errors.ToArray());
  }
  </code></pre>