Skip to content

ObserveOnThreadPool

1. 概要

ObserveOnThreadPool は、通知をスレッドプール上で配信するオペレーターです。UI スレッドやその他の特定コンテキストからの通知を、スレッドプールに移すことで重い処理をバックグラウンドで実行できます。

2. シグネチャ

デフォルト

csharp
public static Observable<T> ObserveOnThreadPool<T>(
    this Observable<T> source)

通知をスレッドプール上で配信します。内部的には ObserveOn(TimeProvider.System) 相当の動作を行います。

3. マーブルダイアグラム

ObserveOnThreadPool のマーブルダイアグラム

ソースからの通知はすべてスレッドプール上のスレッドで配信されます。

4. サンプルコード

csharp
// UI スレッドで発生したイベントをスレッドプールで処理
uiEventObservable
    .ObserveOnThreadPool()
    .Subscribe(x => HeavyComputation(x));

// スレッドプールで処理した後、UI スレッドに戻す
uiEventObservable
    .ObserveOnThreadPool()
    .Select(x => HeavyComputation(x))
    .ObserveOnCurrentSynchronizationContext()
    .Subscribe(result => label.Text = result.ToString());