我有一个方法,接受 Progress<T>
作为参数,并在内部报告进度。
由于进展可能会很快(例如每秒数百次)在工作线程上发生,所以我需要缓冲它,然后每隔半秒更新视图模型。
过去我使用过 Observable.FromEventPattern().Buffer(TimeSpan)
,因此如果我将 Progress<T>
报告包装成事件,就可以利用相同的 Rx 机制。但是,那似乎过于复杂了。是否有更优雅的解决方案?
我还看了 TPL Dataflow 的 BufferBlock
,但我不确定它是否支持基于时间的缓冲,例如每隔半秒。
如果有任何示例,请发布它。非常感谢。
BufferBlock
没有任何支持。您可以使用BatchBlock
并从计时器调用TriggerBatch()
,但我认为 Rx 在这里是更好的选择。 - svick