我正在寻找实施一些限制行为到我的一个viewmodels。这是一个Silverlight应用程序,但我认为这不是特别重要。事件调节/排队 - 反应性扩展?
考虑具有三个属性的类:
- Property1
- Property2
- Property3
每当这些属性之一被更新,刷新是neccessary。
private void Refresh()
{
//Call out to the server, do something when it comes back
}
我的目标如下:
- 如果刷新过程中,我们应该理想地取消呼叫服务器,如果一个属性更改发出一个新的请求
- ,我们应该留出一小段时间(也许是0.1秒),等待其他更改。这样,如果多个属性快速更改(例如,以编程方式),我们不会将请求发送给服务器。这个0.1秒的窗口可以在每次更改时重置,但不是必需的。
如果问题很重要,我使用ChannelFactory实现进行服务器调用。
我可以用什么样的模式来完成这个?这是反应式扩展可以帮助我吗?
编辑:
标记保罗的答案是正确的。虽然ReactiveUI目前不支持silverlight5,但它清楚地概述了使用Rx解决问题的方法/组合步骤。
的Rx绝对支持这一点,看到http://rxwiki.wikidot.com/101samples#toc29 - 关于取消它 - 从任务 –