ウェブコンテンツをダウンロードする場合、WebClientクラスを使用すると簡単です。
WebClientを使ってWebページを取得する
ダウンロード完了処理をイベントハンドラでおこなう
DownloadStringCompletedイベントハンドラを設定しておいて、DownloadStringAsyncメソッドで非同期ダウンロードを開始します。
// using System.Net; // using Microsoft.Phone.Reactive; // 一番シンプルなケース private void button1_Click(object sender, RoutedEventArgs e) { var client = new WebClient(); client.DownloadStringCompleted += client_DownloadStringCompleted; // ダウンロードを開始する client.DownloadStringAsync(new Uri("http://search.twitter.com/search.atom?q=ch3cooh")); } // ダウンロードが完了すると通知されるイベントハンドラ void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { MessageBox.Show(e.Result); }
Reactive Extensionsを使ってダウンロードしたデータを処理する
以下のソースコードの通り、Rxを使うとダウンロードした後の処理も含めてClickイベントハンドラ内で書いてしまうことができます。
Rxを使うには、あらかじめソリューションエクスプローラーにて[参照の追加]を選択し、参照の追加ダイアログを表示させ「System.Observable」と「Microsoft.Phone.Reactive」を選択しておきます。
// using System.Net; // using Microsoft.Phone.Reactive; // Rxを使ったケース private void button2_Click(object sender, RoutedEventArgs e) { var client = new WebClient(); Observable.FromEvent<DownloadStringCompletedEventArgs>(client, "DownloadStringCompleted") .Select(evt => evt.EventArgs.Result) .Subscribe((msg => MessageBox.Show(msg))); // ダウンロードを開始する client.DownloadStringAsync(new Uri("http://search.twitter.com/search.atom?q=ch3cooh")); }