有没有办法强制Observable.Start中的代码块逐个执行元素?
为了清楚起见,例如,当它完成索引0时,它将在索引1上执行,依此类推......
public void Click()
{
this.strings.ToObservable().Subscribe(
x =>
{
Observable.Start(
() =>
{
//long operation
BarValue++;
});
});
}
答案 0 :(得分:1)
你走了:
this.strings.ToObservable()
.Select(x => Observable.Defer(() => Observable.Start(() => { /* ... */ })))
.Concat();
我们将每个字符串选择为一个Observable,当订阅时,它将启动一个任务并做一些工作(即不像调用Observable.Start那样立即发生工作,这就是为什么我们需要Defer停止开始的方法开始)。
然后,我们通过Concat将所有内容合并在一起,这保证了它将通过一次只运行一个项目来维护流的原始排序。