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

C#でも匿名メソッドを使って非同期通信(拡張メソッド編) - まさるDiaryの続き

さすがにあんまりだったので、Uriクラスを拡張するようにしてみた。

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 Uri 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)
    {
      new Uri("http://blogs.wankuma.com/masaru/").Get(result => Console.WriteLine(result));

      Thread.Sleep(1000);
    }
  }
}