<PackageReference Include="System.Reactive" Version="6.1.0-preview.9" />
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();
}
}
}
}