IEnumerable<Task<T>> を IObservable<T> に変換する組み込みの方法はありますか。順序は関係ありません。できれば完了したときに取得します。
まだ存在しない場合、それを達成するための良い方法は何でしょうか?
IEnumerable<Task<T>> を IObservable<T> に変換する組み込みの方法はありますか。順序は関係ありません。できれば完了したときに取得します。
まだ存在しない場合、それを達成するための良い方法は何でしょうか?
私はこれがうまくいくと信じています
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();