title: C#5/ Task Library will it rewrite my method calls?
body: <p>I need to get some stuff sorted out about all this async stuff.</p>
  
  <p>Let's say I want to load a big file. From my understanding there is a difference in just calling <code>File.Read()</code> and queuing this up into the thread pool or using the <code>Begin</code>-/<code>EndRead</code> API. </p>
  
  <p>As far as I know, if you use the <code>BeginFoo</code>/<code>EndFoo</code> API you are not even blocking any thread but instead the hardware will just call you back whenever it has finished it's work. By contrast, spinning up a thread from the <code>ThreadPool</code> means you are at least blocking this particular thread for work that is actually not CPU related...</p>
  
  <p>So far, so good.</p>
  
  <p>I wonder what does the task library actually do if I use <code>File.Read</code>? Is it smart enough to change my code to use the <code>BeginFoo</code>/<code>EndFoo</code> API? Or will it just spin up a thread from the <code>ThreadPool</code>? </p>
  
  <p>If it's really changing my code, I wonder how far will it hunt down my code to rewrite method calls?</p>
  
  <p>Does that make any sense?</p>
  
  <p>Help me out please!</p>