9

IEnumerable<Task<T>> を IObservable<T> に変換する組み込みの方法はありますか。順序は関係ありません。できれば完了したときに取得します。

まだ存在しない場合、それを達成するための良い方法は何でしょうか?

4

4 に答える 4

7

私はこれがうまくいくと信じています

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

各タスクは、完了した順序に関係なく、その結果をオブザーバブル シーケンスに送信します。シーケンスをサブスクライブして、その結果に対して必要なことを何でも行うことができます。

于 2012-11-21T20:23:27.620 に答える
2

あなたはこのようにすることができます:

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

または、代わりに、次のようにします。

var query =
    from t in tasks.ToObservable()
    from i in t.ToObservable()
    select i;
于 2012-11-22T00:55:10.320 に答える
1

あなたが探しているのはObservable.Start()

次に、最後に追加.Subscribe(callbackMethod)して、必要に応じてコールバックを指定できます。

于 2012-11-21T19:19:20.077 に答える
0

Rx 2.0 では、もう少し簡単な方法があります。

var query = tasks.ToObservable().Merge();
于 2014-08-27T12:42:45.947 に答える