Observable.Generateの続き(コードレシピにサンプルあげた)
前回の記事の続き。
いくらRxでも非同期でもConsoleに数字出して何が嬉しいんじゃーってことで
Twitterがら非同期でデータを取得して表示するWPFアプリのサンプル作った。
■Reactive Extensionsを使用してTwitterから非同期にデータを取得し表示する
http://code.msdn.microsoft.com/Reactive-ExtensionsTwitter-b8238b51
肝の部分のコードはこんな感じ
var client = new TwitterAccessClient(ScreenName); //GenerateメソッドをScheduler.ThreadPoolとともに呼び出すことによって、 //非同期にFriendsを取得します。 var o = Observable.Generate( new UsersResult { next_cursor = "-1", users = new List<User>() }, i => { //ここで取得した結果をFriendsに追加します。 Friends.AddRange(i.users); //次のカーソルが0の場合、終了します。 return i.next_cursor != "0"; }, i => { //次のカーソルを引数にしてFriends取得メソッドを実行します。 return client.GetFriends(i.next_cursor); }, i => i, //Scheduler.ThreadPoolを指定することで別スレッドで実行されます。 Scheduler.ThreadPool); o.Subscribe( i => { }, //エラー this.HadleError, () => { isBusy = false; //情報テキストを変更します。 base.RaisePropertyChanged(() => InformationText); });
だけど、もっと良い書き方あるかも。あったらまじで是非教えて欲しい・・・。
まだまだRxのお勉強は始まったばかり・・・
毎日テサグリング・・・
それからコードレシピの感想
かなり気楽に投稿できるもんだと勝手に思ってたorz
でもよく考えたらサンプルなんだしきちんと説明とか書かなきゃだ。
がんばろう、俺!