Reactive Framework for .NET の有用性を証明するサンプル [終了]
-
20-09-2019 - |
質問
新しいものに関してはかなりの誇大宣伝がありました リアクティブフレームワーク .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または「Go!」を押して(待ち時間をスキップする)検索を強制することができます。ボタンと、クリアボタンを押して継続的な検索を停止できます。ビジー インジケーターといくつかのエラー処理 (ネットワークがダウンした場合など) があります。
取り上げられる主なトピック:
- イベントからのオブザーバブルの作成 (TextChanged、Button.Click など)
- 非同期デリゲート (非同期検索)
- TakeUntil 拡張機能
- DistinctUntilChanged 拡張機能 (カスタム Equals を含む)
- 拡張機能のマージ
- スロットルエクステンション
- ObserveOn 拡張機能 (UI スレッド同期用)
..もっと!