【发布时间】:2012-06-15 16:19:24
【问题描述】:
我希望在我的一个视图模型中实现一些限制行为。这是一个 Silverlight 应用程序,但我认为这不是特别重要。
考虑一个具有三个属性的类:
- 属性1
- 属性2
- 属性3
每当更新这些属性之一时,都需要刷新。
private void Refresh()
{
//Call out to the server, do something when it comes back
}
我的目标如下:
- 如果正在刷新,我们最好取消对服务器的调用,并发出新请求
- 如果属性发生更改,我们应该留出一些小时间窗口(可能是 0.1 秒)等待其他更改。这样,如果多个属性快速更改(例如,以编程方式),我们不会向服务器发送垃圾邮件请求。每次更改都可以重置 0.1 秒的窗口,但不是必需的。
如果重要的话,我正在使用 ChannelFactory 实现来进行服务器调用。
我可以使用什么样的模式来实现这一点?这是响应式扩展可以帮助我的事情吗?
编辑:
将 Paul 的答案标记为正确。虽然 ReactiveUI 目前不适用于 silverlight5,但它清楚地概述了使用 Rx 解决问题的方法/组合步骤。
【问题讨论】:
-
Rx 绝对支持这一点,请参阅 rxwiki.wikidot.com/101samples#toc29 - 关于取消它 - 看看来自 Tasks 的 CancellationToken
标签: c# .net system.reactive silverlight-5.0