<PackageReference Include="System.Reactive" Version="6.0.0-preview.13" />
    
	
	
		
		
		
	 
	
	
        
                
                SynchronizedObserver<T>
                
                
                
                
using System.
Runtime.
CompilerServices;
namespace System.
Reactive
{
    [
System.
Runtime.
CompilerServices.
NullableContext(
1)]
    [
System.
Runtime.
CompilerServices.
Nullable(
new byte[] {
        
0,
        
1
    })]
    
internal sealed class SynchronizedObserver<[
System.
Runtime.
CompilerServices.
Nullable(
2)] 
T> : 
ObserverBase<
T>
    {
        
private readonly object _gate;
        
private readonly IObserver<
T> 
_observer;
        
public SynchronizedObserver(
IObserver<
T> 
observer, 
object gate)
        {
            
_gate = 
gate;
            
_observer = 
observer;
        }
        
protected override void OnNextCore(
T value)
        {
            
lock (
_gate) {
                
_observer.
OnNext(
value);
            }
        }
        
protected override void OnErrorCore(
Exception exception)
        {
            
lock (
_gate) {
                
_observer.
OnError(
exception);
            }
        }
        
protected override void OnCompletedCore()
        {
            
lock (
_gate) {
                
_observer.
OnCompleted();
            }
        }
    }
}