0

Rx フレームワークを使用して、UI をブロックせずに複数のプロセスを同時に実行できますか? WPF UI から同時にさまざまな Web サービス [1000 以上の場合もある] を呼び出したいとします。各 Web サービス呼び出しの結果を UI のグリッドに更新する必要があります。Task と Parallel を使用して実行しました。しかし、私がプロセスを開始すると、Parallel foreach は 1000 のうちのいくつかのサービス呼び出しで開始されます。最初は 15 または 20 かかり、次の 20 または 15 を呼び出すなどです。したがって、これは私が望むものではありません。1000回の呼び出しはすべて同時に発生し、各呼び出しはその結果を処理してグリッドに更新する必要があります!!

RXフレームワークを使えばこのような操作が可能ですか?はいの場合、この問題に関するガイドラインを提供できますか?? RX初心者です。

どうもありがとう

4

2 に答える 2

0

ForkJoinメソッド(http://rxwiki.wikidot.com/101samples#toc3 )を確認することをお勧めします。それはRx実験にあります。

于 2013-01-17T16:25:18.093 に答える
0

あなたがやりたいことをするのは本当にとても簡単です。

クエリをどのように構成するかの例を次に示します。

var query =
    from n in Observable.Range(0, 100)
    from t in webServiceCall(n)
    select new { n, t };

関数には次のwebServiceCallシグネチャがあります: Func<int, IObservable<string>>.

上記を使用してテストしました:

Func<int, IObservable<string>> webServiceCall =
    n =>
        Observable
            .Return(n.ToString() + "!")
            .Delay(TimeSpan.FromSeconds(1.0));

...そしてこのサブスクリプションで:

query.ToArray().Subscribe(results =>
{
    /* array of results here */
});

すべての結果が 1 秒強で返ってきました。

これを試してみたObservable.Range(0, 1000)ところ、LinqPad でメモリ不足エラーが発生したため、環境での制限に注意する必要があるかもしれません。

于 2013-01-18T07:18:50.287 に答える