Ale*_*yte 3 c# wpf buffering system.reactive tpl-dataflow
我有一个方法,它Progress<T>作为参数,并在内部报告进展.
因为进度可能在工作线程上快速发生(例如每秒数百次),我需要缓冲它,然后用接收的记录更新视图模型,例如每半秒一次.
在过去我使用过,Observable.FromEventPattern().Buffer(TimeSpan)所以我看到如果我将Progress<T>报告包装到一个事件中,就可以使用相同的Rx机制.然而,这似乎是一种矫枉过正.有更优雅的解决方案吗?
我也看过TPL Dataflow,BufferBlock但我不确定它是否支持基于时间的缓冲,例如每半秒一次.
如果有人有例子,请发布.非常感谢.
RX是这样做的明显选择,但你根本不需要使用事件来使用RX,在你的情况下,你可以简单地使用a Subject<Progress<T>>并让你的方法(当前获取Progress<T>作为参数)将数据推入主题.然后,就像您之前在事件源上观察到的那样,您可以对主题进行RX查询
但是如果你觉得用你喜欢的方式做事情会更好,我根本就没有看到任何过度杀戮.
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |