我正试图了解.NET Reactive Extensions,我想知道它们是否可以用于以下场景:
在我的WP7应用程序中,我使用SterlingDatabase来保持应用程序设置。当用户修改设置时,我想定期调用Database.Flush()
因此,在我的Property Set方法中,我想启动一个Database.Flush()计时器事件,并在5秒内写入数据库。如果另一个属性被写入,我想重新启动计时器。
我知道我可以用一个定时器对象来做这件事,调用Start()
和Stop()
,但我想知道我是否可以用Rx来做这项工作,以创建一个基本上可以启动和停止的Asycn操作,而不使用定时器?
使用Throttle:
public void AttachFlushes(IObservable<Unit> writes, SterlingDb db)
{
writes.Throttle(TimeSpan.FromSeconds(5)).Do(_ => db.Flush()).Subscribe();
}