質問

新しいものに関してはかなりの誇大宣伝がありました リアクティブフレームワーク .NET 4.0では。基本的な概念は理解できたと思いますが、それがそれほど便利であるということは完全には理解できません。Rx の威力と有用性を完全に示す (中途半端にわかりやすい) 良い例を思いつきませんか?Rx を使用すると作業が非常に楽になるものを示します。

役に立ちましたか?

解決

ここでは簡単な例です。イベントにLINQを使用して、完全に宣言型の方法で、ドラッグ操作をプログラムします。

   //Create an observable with the initial position and dragged points using LINQ to Events
   var mouseDragPoints = from md in e.GetMouseDown()
                           let startpos=md.EventArgs.GetPosition(e)
                           from mm in e.GetMouseMove().Until(e.GetMouseUp())
                           select new
                           {
                             StartPos = startpos,
                             CurrentPos = mm.EventArgs.GetPosition(e),
                           };

と現在のPOSにstartposから線を引く。

//Subscribe and draw a line from start position to current position  
            mouseDragPoints.Subscribe  
                (item =>  
                { 
                  //Draw a line from item.Startpos to item.CurrentPos
                }
                ); 

あなたが見ることができるように、何のイベントすべての場所以上のハンドラ、また状態を管理するためのブール変数はありません。

あなたはこの全体の記事を読んで、ソースコードをダウンロードし、それを再生するためにあなたを示唆したものGetEventName()メソッド、興味があるならば。

ここでそれを読むと遊びますソースを持つ>>

他のヒント

最近、ブログにデモを段階的に書きました。 http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and-slides/

私は基本的に、Rx と Bing Search を使用して WPF で小さなアプリを構築しています。

enter image description here

アプリは入力を停止するまで待機し、非同期検索を実行して結果を表示します。結果が返される前に別の検索を実行すると、既存の検索が自動的に削除されます。

Enterまたは「Go!」を押して(待ち時間をスキップする)検索を強制することができます。ボタンと、クリアボタンを押して継続的な検索を停止できます。ビジー インジケーターといくつかのエラー処理 (ネットワークがダウンした場合など) があります。

取り上げられる主なトピック:

  • イベントからのオブザーバブルの作成 (TextChanged、Button.Click など)
  • 非同期デリゲート (非同期検索)
  • TakeUntil 拡張機能
  • DistinctUntilChanged 拡張機能 (カスタム Equals を含む)
  • 拡張機能のマージ
  • スロットルエクステンション
  • ObserveOn 拡張機能 (UI スレッド同期用)

..もっと!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top