Class Observer
Provides a set of static methods for creating observers.
Inherited Members
Namespace: System.Reactive
Assembly: System.Reactive.Core.dll
Syntax
public static class Observer
Methods
| Improve this Doc View SourceAsObserver<T>(IObserver<T>)
Hides the identity of an observer.
Declaration
public static IObserver<T> AsObserver<T>(this IObserver<T> observer)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | An observer whose identity to hide. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that hides the identity of the specified observer. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Checked<T>(IObserver<T>)
Checks access to the observer for grammar violations. This includes checking for multiple OnError or OnCompleted calls, as well as reentrancy in any of the observer methods. If a violation is detected, an InvalidOperationException is thrown from the offending observer method call.
Declaration
public static IObserver<T> Checked<T>(this IObserver<T> observer)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer whose callback invocations should be checked for grammar violations. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that checks callbacks invocations against the observer grammar and, if the checks pass, forwards those to the specified observer. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Create<T>(Action<T>)
Creates an observer from the specified OnNext action.
Declaration
public static IObserver<T> Create<T>(Action<T> onNext)
Parameters
Type | Name | Description |
---|---|---|
Action<T> | onNext | Observer's OnNext action implementation. |
Returns
Type | Description |
---|---|
IObserver<T> | The observer object implemented using the given actions. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Create<T>(Action<T>, Action)
Creates an observer from the specified OnNext and OnCompleted actions.
Declaration
public static IObserver<T> Create<T>(Action<T> onNext, Action onCompleted)
Parameters
Type | Name | Description |
---|---|---|
Action<T> | onNext | Observer's OnNext action implementation. |
Action | onCompleted | Observer's OnCompleted action implementation. |
Returns
Type | Description |
---|---|
IObserver<T> | The observer object implemented using the given actions. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Create<T>(Action<T>, Action<Exception>)
Creates an observer from the specified OnNext and OnError actions.
Declaration
public static IObserver<T> Create<T>(Action<T> onNext, Action<Exception> onError)
Parameters
Type | Name | Description |
---|---|---|
Action<T> | onNext | Observer's OnNext action implementation. |
Action<Exception> | onError | Observer's OnError action implementation. |
Returns
Type | Description |
---|---|
IObserver<T> | The observer object implemented using the given actions. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Create<T>(Action<T>, Action<Exception>, Action)
Creates an observer from the specified OnNext, OnError, and OnCompleted actions.
Declaration
public static IObserver<T> Create<T>(Action<T> onNext, Action<Exception> onError, Action onCompleted)
Parameters
Type | Name | Description |
---|---|---|
Action<T> | onNext | Observer's OnNext action implementation. |
Action<Exception> | onError | Observer's OnError action implementation. |
Action | onCompleted | Observer's OnCompleted action implementation. |
Returns
Type | Description |
---|---|
IObserver<T> | The observer object implemented using the given actions. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
NotifyOn<T>(IObserver<T>, IScheduler)
Schedules the invocation of observer methods on the given scheduler.
Declaration
public static IObserver<T> NotifyOn<T>(this IObserver<T> observer, IScheduler scheduler)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer to schedule messages for. |
IScheduler | scheduler | Scheduler to schedule observer messages on. |
Returns
Type | Description |
---|---|
IObserver<T> | Observer whose messages are scheduled on the given scheduler. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
NotifyOn<T>(IObserver<T>, SynchronizationContext)
Schedules the invocation of observer methods on the given synchonization context.
Declaration
public static IObserver<T> NotifyOn<T>(this IObserver<T> observer, SynchronizationContext context)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer to schedule messages for. |
SynchronizationContext | context | Synchonization context to schedule observer messages on. |
Returns
Type | Description |
---|---|
IObserver<T> | Observer whose messages are scheduled on the given synchonization context. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Synchronize<T>(IObserver<T>)
Synchronizes access to the observer such that its callback methods cannot be called concurrently from multiple threads. This overload is useful when coordinating access to an observer. Notice reentrant observer callbacks on the same thread are still possible.
Declaration
public static IObserver<T> Synchronize<T>(IObserver<T> observer)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer whose callbacks should be synchronized. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that delivers callbacks to the specified observer in a synchronized manner. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Remarks
Because a Monitor is used to perform the synchronization, there's no protection against reentrancy from the same thread. Hence, overlapped observer callbacks are still possible, which is invalid behavior according to the observer grammar. In order to protect against this behavior as well, use the Synchronize<T>(IObserver<T>, Boolean) overload, passing true for the second parameter.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Synchronize<T>(IObserver<T>, Boolean)
Synchronizes access to the observer such that its callback methods cannot be called concurrently. This overload is useful when coordinating access to an observer.
The preventReentrancy
parameter configures the type of lock used for synchronization.
Declaration
public static IObserver<T> Synchronize<T>(IObserver<T> observer, bool preventReentrancy)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer whose callbacks should be synchronized. |
Boolean | preventReentrancy | If set to true, reentrant observer callbacks will be queued up and get delivered to the observer in a sequential manner. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that delivers callbacks to the specified observer in a synchronized manner. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Remarks
When the preventReentrancy
parameter is set to false, behavior is identical to the Synchronize<T>(IObserver<T>) overload which uses
a Monitor for synchronization. When the preventReentrancy
parameter is set to true, an AsyncLock
is used to queue up callbacks to the specified observer if a reentrant call is made.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Synchronize<T>(IObserver<T>, Object)
Synchronizes access to the observer such that its callback methods cannot be called concurrently by multiple threads, using the specified gate object for use by a Monitor-based lock. This overload is useful when coordinating multiple observers that access shared state by synchronizing on a common gate object. Notice reentrant observer callbacks on the same thread are still possible.
Declaration
public static IObserver<T> Synchronize<T>(IObserver<T> observer, object gate)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer whose callbacks should be synchronized. |
Object | gate | Gate object to synchronize each observer call on. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that delivers callbacks to the specified observer in a synchronized manner. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Remarks
Because a Monitor is used to perform the synchronization, there's no protection against reentrancy from the same thread. Hence, overlapped observer callbacks are still possible, which is invalid behavior according to the observer grammar. In order to protect against this behavior as well, use the Synchronize<T>(IObserver<T>, AsyncLock) overload.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Synchronize<T>(IObserver<T>, AsyncLock)
Synchronizes access to the observer such that its callback methods cannot be called concurrently, using the specified asynchronous lock to protect against concurrent and reentrant access. This overload is useful when coordinating multiple observers that access shared state by synchronizing on a common asynchronous lock.
Declaration
public static IObserver<T> Synchronize<T>(IObserver<T> observer, AsyncLock asyncLock)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | The observer whose callbacks should be synchronized. |
AsyncLock | asyncLock | Gate object to synchronize each observer call on. |
Returns
Type | Description |
---|---|
IObserver<T> | An observer that delivers callbacks to the specified observer in a synchronized manner. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the source observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ToNotifier<T>(IObserver<T>)
Creates a notification callback from an observer.
Declaration
public static Action<Notification<T>> ToNotifier<T>(this IObserver<T> observer)
Parameters
Type | Name | Description |
---|---|---|
IObserver<T> | observer | Observer object. |
Returns
Type | Description |
---|---|
Action<Notification<T>> | The action that forwards its input notification to the underlying observer. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ToObserver<T>(Action<Notification<T>>)
Creates an observer from a notification callback.
Declaration
public static IObserver<T> ToObserver<T>(this Action<Notification<T>> handler)
Parameters
Type | Name | Description |
---|---|---|
Action<Notification<T>> | handler | Action that handles a notification. |
Returns
Type | Description |
---|---|
IObserver<T> | The observer object that invokes the specified handler using a notification corresponding to each message it receives. |
Type Parameters
Name | Description |
---|---|
T | The type of the elements received by the observer. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|