.net Observable
クラスを使用して単純なオブザーバーパターンを実装しようとしています。私はこのようなコードがあります。.net Observable ObserveOnバックグラウンドスレッド
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "FirstName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnFirstNameChanged(search.EventArgs));
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "LastName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnLastNameChanged(search.EventArgs));
私はオブザーバーは、バックグラウンドスレッドで実行したいが、私は(私たちの本当の実装のために、それがあまりにも複雑になり、同じバックグラウンドスレッド上のすべての実行するようにしたいです別のスレッドにすべてのリスナーを持つ)。
つまり、UIスレッド以外のスレッドでOnXXXChanged
ロジックをすべて実行したいのですが、スレッドプール全体でObserving
の代わりに、同じスレッドで正しい順序で実行されていることを確認します。
上記はどのように修正する必要がありますか?
さらに、このパターンを実装するために、Observable
クラスを使用したサンプルコードのサンプルがありますか?
大変ありがとうございました! – user981225
EventLoopSchedulerはIDisposableを実装していますので、処理を担当します。観察可能なファクトリを使用するメソッドを使用して、生涯をサブスクリプションに結びつけることができます。 – Fredrick
Scheduler.NewThreadは廃止されました。代わりにNewThreadScheduler.Defaultを使用する必要があります。 – Kreshnik