title: With C# and .NET, why doesn't the runtime automatically operate asynchronously?
body: <p>This is such a basic (read noob) question regarding the .NET async/await library but I thought I'd ask it anyhow before rewriting our api's to be awaitable.</p>
  
  <p><strong>The Question</strong></p>
  
  <p>Why wouldn't the runtime simply evaluate any given thread that has a lot of idle time and automatically operate asynchronous whenever it gets to the blocking call.</p>
  
  <p><strong>Example of some routine</strong></p>
  
  <ol>
  <li>Web request to some app...</li>
  <li>App starts database call...</li>
  <li>Wait for response...(idle and long)</li>
  <li>Receive recordset...</li>
  <li>Return to client...</li>
  </ol>
  
  <p>If I were the runtime environment, wouldn't it be wise to simply jot down that step 3 takes a while so I should use the current thread at that point, during its idle moments, to help out other routines that would normally be waiting for our current thread to be available?</p>
  
  <p>Isn't it possible that at some point in the future we'll be able to toggle a flag in the app.config (or web.config) that says <code>&lt;system.runtime&gt;&lt;asyncBehavior enableAsynchronousWhenIdle=true /&gt;&lt;/system.runtime&gt;</code>?</p>