xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

2012-01-01から1年間の記事一覧

Rx入門 (24) - まとめてDispose

Rx

「Hot Observableなどに関連付けした複数のオブザーバーを一括して解除したい!」と思ったことはありませんか?今回はこれの実装を少しばかり簡単にする方法について見ていきたいと思います。 List<T>などを利用する場合 まず、一般的なコレクションを利用した</t>…

Rx入門 (23) - メソッドチェイン中の例外

Rx

今回はメソッドチェイン中に例外が発生した場合について見ていきます。これまでの連載中は基本的に例外は起こらないものとして解説してきたので、OnErrorメソッドはほとんど使っていませんでした。とは言え例外発生時の挙動について知っておくことは重要なの…

Rx入門 (22) - TwitterのTimelineを表示

Rx

今回はTwitterのタイムラインを表示するサンプルを紹介します。なんという事はなく、WebClientクラスのDownloadStringAsyncメソッドをRxに乗せてみた、というやつです。Twitterからのタイムライン取得はAtomフィードを利用しています。 サンプルコード まず…

Rx入門 (21) - Webの画像をスライド表示

Rx

今回は、Web上の画像をダウンロードしてスライドショー形式で表示するサンプルを紹介します。先日自然気胸で入院していたときに@ch3cooh先生作のWindows Phone 7アプリ某時計に触発されて作ったものの一部で、super bijin-tokeiの画像を3秒間隔 (1分間隔でな…

Rx入門 (20) - Drag & Dropでの落書き

Rx

今回はDrag & Dropでキャンバスに落書きを行うサンプルを紹介します。通常のDrag & Drop処理と比較して、どれほど簡単に書けるのか比較してみましょう。 Rxを利用しないDrag & Drop処理 まず、Rxを利用しない場合のサンプルコードを示します。以下のように、…

Rx入門 (19) - マウス位置のトラッキング

Rx

今回は、ボタン上の一部でマウス位置のトラッキングを行うというだけの (つまんない) サンプルを紹介します。CAD系のソフトだとステータスバーにマウスの座標位置が表示されるものがありますが、そう言ったケースで応用が利くかもしれません。 サンプルコー…

Rx入門 (18) - 効率的な表示更新

Rx

今回は、Explorerなどでよく見かけるMaster-Detailパターンでの効率的な表示更新のサンプルを紹介します。「とあるオブジェクトの一覧がリストに表示されていて、選択されているものの内容の詳細が横に表示される」というアレです。 詳細表示の描画に時間が…

Rx入門 (17) - 入力文字の遅延表示

Rx

しばらく空いてしまいましたが、落ち穂拾いと称してマッタリのんびりゆったりとやっていこうと思います。今回からはRxを利用した簡単な応用例をいくつか載せて行こうと思います。サンプルコードはサンプルコード集の中に随時追加して行きますので、ぜひ実際…

Rx入門 (16) - おわりに

Rx

ここまで15回に渡ってRxについて見てきました。今回もTPLのとき同様、個人的に勉強したことの備忘録でしかありませんが、読まれた方々が少しでもRxについて興味を持ってくださったり、理解を深めるキッカケになっていれば幸いです。 ソフトウェアエンジニア…

Rx入門 (15) - スケジューラの利用

Rx

今回で入門記事の連載も (一応名ばかりの) 最後です。今回はスケジューラの利用について見ていきます。残念ながら、これについてはだいぶ自信がありません。今わかっている範囲、そうだろうと思っている範囲で書きます。 スケジューラ スケジューラとは、処…

Rx入門 (14) - Cold to Hot変換

Rx

Push型配信の特徴は情報の分配 (同じデータを複数の購読者に送信すること) です。しかし、前回の内容の通り、ColdなObservableでは分配をすることができません。Rxの旨みを最大限に引き出すためには、ColdなObservableをHotなObservableに変換する必要があり…

Rx入門 (13) - HotとCold

Rx

IObservable<T>には、HotとColdと呼ばれる2つの性質があります。実はこれまで触れてきた記事のサンプルにもHotなものとColdなものが出てきていました。これらの性質の違いを把握することはRxを利用する上で非常に重要です。今回はこれらについて見ていきます。 </t>…

Rx入門 (12) - 非同期処理のシーケンス化

Rx

今回は、同期メソッドを非同期に実行し、それをIObservable<T>シーケンスとして受ける方法や、非同期処理として提供されているメソッドをIObservable<T>シーケンスに変換する方法ついて見ていきたいと思います。これが使えるようになれば、きっと非同期処理も怖く</t></t>…

Rx入門 (11) - イベントのシーケンス化

Rx

Rx入門 (2) - オブザーバーパターンの最後にもチラッと書きましたが、イベントはオブザーバーパターンの一実装です。なので、イベントをIObservable<T>に乗せ、イベントに対応する処理を記述することができます。そこで今回は、イベントをIObservable<T>シーケンス</t></t>…

Rx入門 (10) - 時間のシーケンス化

Rx

前回までで、IObservable<T>に対してLINQスタイルでの記述ができることを見てきました。これから3回ほどは、時間/イベント/非同期処理をIObservable<T>としてみなし、情報を通知する方法について触れていきます。 MouseMoveなどの各種イベント、一定間隔で発行され</t></t>…

Rx入門 (9) - Where/Selectの自作

Rx

前回はLINQの記述を用いて、流れてくるデータをフィルタリング (Where) したり、変換 (Select) したりしました。今回はこれらを自作することで、より理解を深めてみようと思います。 実装へのアプローチ IObservable<T>がIObserver<T>に情報を流すというのが、Rxで</t></t>…