0

ReactiveUI を使用しています。ボタンで、Web サービスを呼び出したい。この呼び出しが成功したら、UI を更新したいと思います。

で非同期関数を登録するとRegisterAsyncFunction、サブスクライブできるオブザーバブルが取得されます。これにより、非同期コードが返されたときにコードを実行する機会が得られObserveOnDispatcher()、UIThread でコードを実行することもできます。

唯一の問題は、コマンドに戻り値がないことです。

この目的のためだと思いますRegisterAsyncActionが、このアクションがいつ行われたかを知る方法が見つかりません。

この場合、ReactiveAsyncCommnand を使用する正しい方法は何でしょうか?

4

1 に答える 1

1

おっと、 にバグが見つかったようです。RegisterAsyncAction戻ってくるはずですIObservable<Unit>

それまでの間、修正したバージョンをコピーしてアプリに貼り付けてください。これは単なる拡張メソッドです。

    /// <summary>
    /// RegisterAsyncAction registers an asynchronous method that runs
    /// whenever the Command's Execute method is called and doesn't return a
    /// result.
    /// </summary>
    /// <param name="calculationFunc">The function to be run in the
    /// background.</param>
    public static IObservable<Unit> RegisterAsyncAction(this IReactiveAsyncCommand This, 
        Action<object> calculationFunc,
        IScheduler scheduler = null)
    {
        return This.RegisterAsyncFunction(x => { calculationFunc(x); return Unit.Default; }, scheduler);
    }

ObserveOnDispatcher()また、UIThread でコードを実行することもできます。

実際にはこれを行う必要はありません。RxUI は、結果がRegister*UI スレッドに返されることを既に保証しています。

于 2013-04-16T20:38:53.403 に答える