Rx Extensions刷新Buffered Observable中的其余项目

时间:2018-11-27 20:40:22

标签: c# system.reactive

所以我有这段代码:

ISubject<int> _processed = new ReplaySubject<int>();
_processed.Buffer(5000).Subscribe(UpdateProcessed);

// Start some process which calls _processed.OnNext

我的问题是,有时缓冲区不满,因为最后一批少于5000,并且进程退出而未执行对UpdateProcessed的调用。

在处理完成后,是否有办法刷新_processed中可观察到的其余项目?

1 个答案:

答案 0 :(得分:4)

OnComplete将刷新缓冲区。

尝试_processed.OnComplete();

如果您不知道该过程何时完成,则可以随时为缓冲区添加时间跨度。时间跨度到期或缓冲区已满(以先到者为准)时,它将发出项目。

_processed.Buffer(TimeSpan.FromSeconds(1), 5000).Subscribe(UpdateProcessed);