title: Exception Thrown from Thread Pool Thread shown as Unhandled
body: <p>I am firing off a Task of on a background thread pool thread via the following method </p>
  
  <pre><code>private async Task LoadCoreMatchDataAsync()
  {
      string errorMessage = String.Empty;
      ...
      try
      {
          if (!HasConnection)
              return;
  
          IProgress&lt;string&gt; progressIndicator = new Progress&lt;string&gt;(LoadProgress);
          EventsCollection = new BindableCollection&lt;Taurus.MatchDetails&gt;(
              await MatchDataService.GetCollectionAsync(
                  this.client, progressIndicator, this.token));
          ...
      }
      catch (TimeoutException toe)
      {
          errorMessage = String.Format(
              "Retrieval of the MatchDetails using connection " +
              "\"{0}\" failed with the following TimeoutException: \"{1}\".",
              this.ConnectionString,
              toe.Message);
      }
      catch (OperationCanceledException)
      {
          // Do nothing, cancel silently.
      }
  
      // Display any errors.
      if (!String.IsNullOrEmpty(errorMessage))
      {
          await dialogManager.ShowDialog&lt;MessageDialogResult&gt;(
              new MessageBoxViewModel("Connection Timeout", errorMessage, mbs));
          HasConnection = false;
      }
  }
  </code></pre>
  
  <p>where the <code>GetCollectionAsync(...)</code> method is </p>
  
  <pre><code>public async Task&lt;BindableCollection&lt;Taurus.MatchDetails&gt;&gt; GetCollectionAsync(
      MongoClient client, IProgress&lt;string&gt; progressIndicator, CancellationToken token)
  {
      return await Task.Factory.StartNew&lt;BindableCollection&lt;Taurus.MatchDetails&gt;&gt;(() =&gt;
          {
              ... // Somewhere in here we get a TimeoutException thrown. 
          }, token);
  }
  </code></pre>
  
  <p>the problem is that when in my call to <code>await MatchDataService.GetCollectionAsync(...)</code> I get an <em>expected</em> <code>TimeoutException</code>, VS2012 throws "a TimeoutException was unhandled by user code" message, when clearly I am handling the exception in the "continuation" in the correct way. If I continue rather than break, the exception is indeed caught and I get my expected error message. I am just not sure why VS2012 is telling me that the exception is unahandled?</p>
  
  <p>I am essentially doing what is described clearly in on of Jon Skeets answers here <a href="https://stackoverflow.com/a/19865613/626442">https://stackoverflow.com/a/19865613/626442</a>. </p>
  
  <p>Thanks for your time.</p>