Observable.Context が利用できない場合、UI を更新するにはどうすればよいですか?
-
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();
所属していません StackOverflow