title: What must I do to make my methods awaitable?
body: <p>How can I roll my own async awaitable methods?</p>
  
  <p>I see that writing an async method is easy as pie in some cases:</p>
  
  <pre><code>private async Task TestGeo()
  {
      Geolocator geo = new Geolocator();
      Geoposition pos = await geo.GetGeopositionAsync();
      double dLat = pos.Coordinate.Latitude;
      double dLong = pos.Coordinate.Latitude;
  }
  </code></pre>
  
  <p>...but sadly also see that not just any method can be made async willy-nilly, though; to wit: this doesn't work:</p>
  
  <pre><code>private async Task TestAsyncAwait()
  {
      int i = await TaSLs_Classes.TASLsUtils.GetZoomSettingForDistance(5);
  }
  </code></pre>
  
  <p>...it stops me with the compile error, "Cannot await int"; a hint at design time similarly tells me, "type 'int' is not awaitable"</p>
  
  <p>I also tried this with the same results:</p>
  
  <pre><code>    Task&lt;int&gt; i = await TaSLs_Classes.TASLsUtils.GetZoomSettingForDistance(5);
  </code></pre>
  
  <p>What must I do to make my methods awaitable?</p>
  
  <h2>UPDATE</h2>
  
  <p>As Linebacker and S. Cleary indicated (any relation to that cat who used to be on KNBR?), this works:</p>
  
  <pre><code>int i = await Task.Run(() =&gt; TaSLs_Classes.TASLsUtils.GetZoomSettingForDistance(5));
  </code></pre>
  
  <p>...that is to say, it <em>compiles</em> -- but it never "moves."</p>
  
  <p>At runtime, it tells me I should "await" the CALL to TestAsyncAwait(), but if I do that, it doesn't compile at all...</p>