所以我有这段代码:
ISubject<int> _processed = new ReplaySubject<int>();
_processed.Buffer(5000).Subscribe(UpdateProcessed);
// Start some process which calls _processed.OnNext
我的问题是,有时缓冲区不满,因为最后一批少于5000,并且进程退出而未执行对UpdateProcessed
的调用。
在处理完成后,是否有办法刷新_processed
中可观察到的其余项目?
答案 0 :(得分:4)
OnComplete
将刷新缓冲区。
尝试_processed.OnComplete();
如果您不知道该过程何时完成,则可以随时为缓冲区添加时间跨度。时间跨度到期或缓冲区已满(以先到者为准)时,它将发出项目。
_processed.Buffer(TimeSpan.FromSeconds(1), 5000).Subscribe(UpdateProcessed);