c# - react 性扩展示例或限制?

标签 c# wpf system.reactive

我有一个 listBox 并且正在观察何时选择了项目:

selectedItems.Subscribe(DoWorkWIthSelectedItems);

observable 返回一个 viewModel 项目数组,在 DoWorkWIthSelectedItems 中,我遍历所选项目的列表并做一些工作。但是,由于用户可能会非常快速地打开/关闭垃圾选项,每当对某个项目完成工作时,我不希望在 30 秒内再次对该项目进行任何工作。 30 秒后,如果再次选择该项目,则继续进行处理。

有没有 Rx 方法可以做到这一点?我不确定它是 Sample 还是 Throttle。此外,我不知道使用 Rx 是否能够区分数组中适合处理或应该忽略的项目。我是否需要 viewModel 项目的附加属性来指示某种“工作”状态?

谢谢。

最佳答案

无论发生什么,都必须有某种状态。我认为您最简单的解决方案类似于(伪代码)

var recentlyUsed = new ConcurrentDictionary<T, DateTime>();
...
selectedItems
    .Do(/* remove expired items from recentlyUsed */)
    .Where(/* items are not in recently used */)
    .Do(/* add items to recently used */)
    .Subscribe(DoWorkWIthSelectedItems);  

关于c# - react 性扩展示例或限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186420/

相关文章:

c# - Observable.Interval 对高频事件有用吗?

c# - 绑定(bind)数据更改时 Winforms 列表框不更新

c# - 在 NHibernate 中将实体设为只写

c# - 无法使用DataStax C# Drive将cassandra中的 "Set"转换为c#中的 "SortedSet"或 "HashSet"

c# - 如何在 WPF 中从图像源释放图像

c# - wpf 样式 setter 中的 TemplateBinding?

c# - 一个类实现两个不同的 IObservables?

C# 代码连接到本地主机中的 mysql。供应商错了吗?

wpf - 删除WPF ListView的“经典”缩进边框

vb.net - 对 System.Reactive 中的更改使用react