SubscribeOnSynchronize
1. 概要
SubscribeOnSynchronize は、購読時にロック(lock)で同期化を行うオペレーターです。提供された gate オブジェクトを使用してソースへの購読呼び出しを排他的に制御します。
2. シグネチャ
デフォルト
csharp
public static Observable<T> SubscribeOnSynchronize<T>(
this Observable<T> source,
object gate,
bool rawObserver = false)指定した gate オブジェクトで lock を取得し、ソースへの購読処理を同期的に実行します。rawObserver は通常 false のまま使います。true にすると observer.Wrap() による中継を省き、下流の Observer<T> を直接使います。詳しい違いは rawObserver を参照してください。
3. マーブルダイアグラム
購読処理がロックにより排他制御され、同時に複数の購読が実行されることを防ぎます。
4. サンプルコード
csharp
var gate = new object();
// gate オブジェクトでロックして購読
observable
.SubscribeOnSynchronize(gate)
.Subscribe(x => Console.WriteLine($"値: {x}"));
// 複数の購読を同じ gate で同期
observable
.SubscribeOnSynchronize(gate)
.Subscribe(x => ProcessA(x));
observable
.SubscribeOnSynchronize(gate)
.Subscribe(x => ProcessB(x));