Observable.Context が利用できない場合、UI を更新するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1957438

  •  21-09-2019
  •  | 
  •  

質問

WinFrom アプリがあり、同期メソッドを使用して URL から文字列をダウンロードし、Rx ToAsync メソッドを使用して非同期にして監視可能な結果を​​取得し、結果が返されたらフォームに表示します。

昨日、Rxを最新リリースにアップデートしたところ、「ObservableにはContextの定義が含まれていません」と言われました。この行をコメントしようとしたところ、コードは「クロススレッド操作が無効です:」という例外をスローしました。コントロール「tbx_Reference」が、作成されたスレッド以外のスレッドからアクセスされました。」

Subscribeメソッドを使って非同期結果を表示したいと思います。この問題はどうすれば解決できますか?どうもありがとう。

public static IObservable<TResult> DoWorkAsync(TParameter parameter,
        Func<TParameter,TResult> actionSync)
    {
        Observable.Context = SynchronizationContext.Current;

        Func<TParameter, IObservable<TResult>> ActionAsync =  actionSync.ToAsync();

        IObservable<TResult> results = from result in ActionAsync(parameter)
                                       select result;

        return results;
    }
役に立ちましたか?

解決

あなたのreturn文の場合、試してください:

return results.ObserveOnDispatcher();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top