ObserveOnThreadPool
1. 概要
ObserveOnThreadPool は、通知をスレッドプール上で配信するオペレーターです。UI スレッドやその他の特定コンテキストからの通知を、スレッドプールに移すことで重い処理をバックグラウンドで実行できます。
2. シグネチャ
デフォルト
csharp
public static Observable<T> ObserveOnThreadPool<T>(
this Observable<T> source)通知をスレッドプール上で配信します。内部的には ObserveOn(TimeProvider.System) 相当の動作を行います。
3. マーブルダイアグラム
ソースからの通知はすべてスレッドプール上のスレッドで配信されます。
4. サンプルコード
csharp
// UI スレッドで発生したイベントをスレッドプールで処理
uiEventObservable
.ObserveOnThreadPool()
.Subscribe(x => HeavyComputation(x));
// スレッドプールで処理した後、UI スレッドに戻す
uiEventObservable
.ObserveOnThreadPool()
.Select(x => HeavyComputation(x))
.ObserveOnCurrentSynchronizationContext()
.Subscribe(result => label.Text = result.ToString());