Observable.Synchronize(TSource) Method (IObservable(TSource))

Synchronizes the observable sequence.

Namespace:  System.Reactive.Linq
Assembly:  System.Reactive (in System.Reactive.dll)

static member Synchronize : 
        source:IObservable<'TSource> -> IObservable<'TSource> 

Type Parameters

TSource

The type source.

Parameters

source
Type: System.IObservable(TSource)
The source sequence.

Return Value

Type: System.IObservable(TSource)
The source sequence whose outgoing calls to observers are synchronized.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IObservable(TSource). When you use instance method syntax to call this method, omit the first parameter. For more information, see https://msdn.microsoft.com/en-us/library/bb384936(v=vs.103).aspx or https://msdn.microsoft.com/en-us/library/bb383977(v=vs.103).aspx.

This Synchronize method returns an observable sequence of the type TSource which synchronizes outgoing calls to the observer methods (OnNext, OnCompletion, OnError). This is accomplished by acquiring a mutual-exclusion lock for a gate object. Another overload of the Synchronize method allows you to provide your own gate object: (Synchronize(TSource)(IObservable(TSource), Object).

This overload of the Synchronize method will create a new gate object for each subscription. Similar to the following:

return Defer(() =>
{
  var gate = new object();
  return Synchronize(gate);
});
Show: