【发布时间】:2019-10-28 16:30:23
【问题描述】:
为了让 UI 响应更快,我分批输出项目。这里的问题是OnFinally() 在最后一个OutputItems() 完成之前被调用。
IObservable<IList<xx>> obs = Observable
.Interval(TimeSpan.FromSeconds(.1), Scheduler.Default)
.Zip(dirEnum.ToObservable(NewThreadScheduler.Default)
.Buffer(100), (a, b) => b)
.ObserveOn(syncContext).Finally(OnFinally);
...
obs.Subscribe(async x => await OutputItems(x));
有没有办法在所有项目都用完时调用 OnFinally?
【问题讨论】:
-
我认为这是预期的执行。
.Finally()每批运行,因为这是每个订阅的延续。也许您不想使用.Finally(),而是想捕获一组任务并使用Task.WaitAll()等待所有任务完成。
标签: c# linq async-await system.reactive