【发布时间】:2014-06-22 15:30:09
【问题描述】:
我有一个将Progress<T> 作为参数并在内部报告进度的方法。
由于工作线程上的进度可能很快(例如每秒数百次),我需要对其进行缓冲,然后使用接收到的记录更新视图模型,例如每半秒一次。
过去我使用过Observable.FromEventPattern().Buffer(TimeSpan),所以我发现如果我将Progress<T> 报告包装到一个事件中,则可以使用相同的Rx 机制。然而,这似乎有点矫枉过正。有没有更优雅的解决方案?
我还查看了 TPL Dataflow 的 BufferBlock,但我不确定它是否支持基于时间的缓冲,例如每半秒一次。
如果有人有示例,请发布。将不胜感激。
【问题讨论】:
-
BufferBlock对此没有任何支持。您可以使用BatchBlock并从计时器调用TriggerBatch(),但我认为 Rx 是一个更好的选择。 -
感谢您的评论。和 Rx 一起去。
标签: c# wpf system.reactive buffering tpl-dataflow