2011-06-20 10 views
2

私は.NET Reactive Extensionsについて頭を抱えようとしており、以下のシナリオで使用できるかどうかは疑問です。Reactive Extensionsを使用して単一のイベントを作成しますか?

私のWP7アプリケーションでは、アプリの設定を維持するためにSterlingDatabaseを使用しています。ユーザーが設定を変更しているので、私は定期的に電話をかけたいです。Database.Flush()

私のプロパティセットメソッドでは、Database.Flush()タイマーイベントを開始したいと思います。データベース。別のプロパティが書き込まれている場合は、タイマーを再起動します。

Start()Stop()を呼び出すことができますが、Rxでこれを実行できるかどうかを知りたかったのは、タイマーを使用せずに基本的に開始して停止できるAsycn操作を作成することでした。 ?

答えて

5

利用スロットル:

public void AttachFlushes(IObservable<Unit> writes, SterlingDb db) 
{ 
    writes.Throttle(TimeSpan.FromSeconds(5)).Do(_ => db.Flush()).Subscribe(); 
} 
+0

デュード。それはあまりにもギャングスターです。 – Alan

+2

Do()はここでは必要ありません。 'Throttle()。Subscribe(_ => db.Flush())'が動作します –

+2

Scottが正しいです。しかし、私も.Doに副作用があり、マシンを稼働させるためにパラメータのない.Subscribeを使うという考えが好きです。開発者がパラメータのないサブスクリプションだけに制約されると、RXの理解に役立ちます。 –

関連する問題