如何将IEnumerable <Task >转换为IObservable

是否有内置的方法将IEnumerable <Task >转换为IObservable 。 顺序并不重要,只是我得到的东西,但最好是因为它们已经完成。

如果它还不存在,那么实现它的好方法是什么?

我相信这会奏效

tasks.Select(t => Observable.FromAsync(() => t)) .Merge(); 

每个任务都会以任何顺序将结果发送到可观察序列。 您可以订阅序列,并以这种方式对结果执行任何操作。

你可以这样做:

 var query = tasks.ToObservable().SelectMany(task => task.ToObservable()); 

或者,或者,像这样:

 var query = from t in tasks.ToObservable() from i in t.ToObservable() select i; 

我相信你所寻找的可能是Observable.Start()

然后,您可以将.Subscribe(callbackMethod)附加到末尾,并在需要时指定回调。

从Rx 2.0开始,有一种更简单的方法:

 var query = tasks.ToObservable().Merge();