使用反应式扩展创建单个事件?

发布于 2024-11-16 20:44:28 字数 352 浏览 1 评论 0原文

我正在尝试了解 .NET 响应式扩展,我想知道它们是否可以在以下场景中使用:

在我的 WP7 应用程序中,我使用 SterlingDatabase 来保存应用程序设置。当用户修改设置时,我想定期调用 Database.Flush()

因此,在我的 Property Set 方法中,我想启动 Database.Flush() 计时器事件,并在比如说5秒,写入数据库。如果写入另一个属性,我想重新启动计时器。

我知道我可以使用计时器对象来执行此操作,调用 Start()Stop(),但我想知道是否可以使用 Rx 执行此操作,以创建一个我基本上可以启动和停止异步操作,而不使用计时器?

I'm trying to get my head around .NET Reactive Extensions, and I wonder if they can be used in the follow scenario:

In my WP7 app, I'm using the SterlingDatabase to persist app settings. As a user is modifying the settings, I want to periodically call Database.Flush()

So in my Property Set method, I'd like to kick off a Database.Flush() timer event, and in say 5 seconds, write to the database. If another property is written to, I want to restart the timer.

I know I can do this with a timer object, calling Start() and Stop(), but I wanted to know if I could do this with Rx, to create an Asycn operation that I can basically start and stop, without using a timer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぽ尐不点ル 2024-11-23 20:44:28

使用油门:

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

Use Throttle:

public void AttachFlushes(IObservable<Unit> writes, SterlingDb  db)
{
    writes.Throttle(TimeSpan.FromSeconds(5)).Do(_ => db.Flush()).Subscribe();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文