我有一个非常琐碎的序列,我试图通过批量处理事件来提高它的效率。具有时间和计数条件的缓冲器操作员似乎符合我的要求,除了一个小的细微差别。当您使用此重载时,无论缓冲区中是否有任何项目,预订都会在指定的时间延迟后收到通知。这真的很烦人,因为大部分时间我的订阅从缓冲区操作符中获得一个空列表。考虑到它是一个多线程应用程序,用户在UI线程上,结果并不是批量处理项目的最佳方法。我想知道是否有一种方法可以使用可用的操作符创建一个序列,当缓冲区中存在一定数量的项目时,或者某个时间已经过去时,该序列将触发,但是当且仅当存在任何项时缓冲区。我知道我可以做这样的事情:具有计数和时间条件的缓冲区操作符
sequence.Buffer(TimeSpan.FromSeconds(5), 1).Where(e=>e.Count > 0)
但我不知道是否有另一种方式来做到这一点,导致莫名其妙我觉得这不是最好的办法。