【发布时间】:2014-04-04 15:35:03
【问题描述】:
我有一个非常健谈的序列,我试图通过批量处理事件来提高它的效率。带有时间和计数条件的 Buffer 运算符似乎符合我的要求,除了一个细微差别。当您使用此重载时,无论缓冲区中是否有任何项目,订阅都会在指定的时间延迟后收到通知。这真的很烦人,因为大多数时候我的订阅从缓冲区操作员那里得到一个空列表。考虑到它是一个订阅者在 UI 线程上的多线程应用程序,事实证明它不是批量处理项目的最佳方法。我想知道是否有一种方法可以使用可用的运算符来创建一个序列,当缓冲区中存在一定数量的项目时,或者当某个时间已经过去时,该序列会触发,但当且仅当有任何项目时缓冲区。我知道我可以这样做:
sequence.Buffer(TimeSpan.FromSeconds(5), 1).Where(e=>e.Count > 0)
但我想知道是否有其他方法可以做到这一点,因为不知何故我觉得这不是最好的方法。
【问题讨论】:
标签: c# .net system.reactive