C#でも匿名メソッドを使って非同期通信(拡張メソッド編)

ネタ元:Silverlightでも匿名メソッドを使って非同期通信 - present

カッとなってやった。今では反省している。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;

namespace ConsoleApplication1
{
  public static class WebHelper
  {
    public static void Get(this string url, Action<string> callback)
    {
      WebRequest request = WebRequest.Create(url);
      request.Method = "GET";
      request.BeginGetResponse(result =>
      {
        WebResponse response = request.EndGetResponse(result);

        using (var stream = new StreamReader(response.GetResponseStream()))
        {
        if (callback != null)
        {
          callback(stream.ReadToEnd());
        }
        }
      }, request);
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      "http://d.hatena.ne.jp/masaru_b_cl/".Get(result => Console.WriteLine(result));

      Thread.Sleep(1000);
    }
  }
}