title: WebClient asynchronous page request
body: <p>I've been trying to to get to read a page by WebClient api. But the page is too large so the response is too slow. Sometimes I need to wait for 2 and half minute to get the full response. </p>
  
  <pre><code>var client = new WebClient();
  var stream = client.OpenRead("http://example.com");
  using (var sr = new StreamReader(stream))
  {
      string line;
      while ((line = sr.ReadLine()) != null)
      {
          // add line and do something else
      }
  }
  </code></pre>
  
  <p>There must be a better way to deal with it. Can i asynchronously retrieve these data and on callback do my work?</p>