title: Await stops execution of thread and never continues
body: <p>I have the following:</p>
  
  <pre><code>public async Task&lt;bool&gt; SearchForUpdatesAsync()
  {
      return await TaskEx.Run(() =&gt;
      {
      if (!ConnectionChecker.IsConnectionAvailable())
          return false;
  
      // Check for SSL and ignore it
      ServicePointManager.ServerCertificateValidationCallback += delegate { return (true); };
  
      var configurations = UpdateConfiguration.Download(UpdateConfigurationFileUri, Proxy);
      var result = new UpdateResult(configurations, CurrentVersion,
          IncludeAlpha, IncludeBeta);
  
      if (!result.UpdatesFound)
          return false;
  
      _updateConfigurations = result.NewestConfigurations;
      double updatePackageSize = 0;
      foreach (var updateConfiguration in _updateConfigurations)
      {
          var newPackageSize = GetUpdatePackageSize(updateConfiguration.UpdatePackageUri);
          if (newPackageSize == null)
              throw new SizeCalculationException(_lp.PackageSizeCalculationExceptionText);
  
          updatePackageSize += newPackageSize.Value;
          _packageOperations.Add(new UpdateVersion(updateConfiguration.LiteralVersion),
              updateConfiguration.Operations);
      }
  
      TotalSize = updatePackageSize;
      return true;
  });
  }
  </code></pre>
  
  <p>As you can see I'm using <strong>Microsoft.Bcl</strong>. 
  Now in my other class I wrote this code in a normal <strong>void</strong>:</p>
  
  <pre><code>TaskEx.Run(async delegate
  {
      // ...
      _updateAvailable = await _updateManager.SearchForUpdatesAsync();
       MessageBox.Show("Test");
  });
  </code></pre>
  
  <p>The problem I have is that it executes <code>_updateAvailable = await _updateManager.SearchForUpdatesAsync();</code> and then it doesn't continue the thread, it just stops as if there is nothing after that call. Visual Studio also tells me this after a while: <code>Thread ... exited with code 259</code>, so something seems to be still alive.</p>
  
  <p>I debugged through it to search for any exceptions that could maybe be swallowed, but nothing, everything works fine and it executes the <strong>return</strong>-statement.
  And that is what I don't understand, I never see the MessageBox and/or no code beyond this line's being executed.
  After I talked to some friends, they confirmed that this shouldn't be. Did I make a horrible mistake when implementing async-await?</p>
  
  <p>Thanks in advance, that's actually all I can say about that, I got no more information, I appreciate any tips and help as far as it's possible.</p>