Compartir a través de


ISubject<TSource, interfaz TResult>

Representa un objeto que es una secuencia observable, así como un observador.

Espacio de nombres:System.Reactive.Subjects
Ensamblaje: System.Reactive (en System.Reactive.dll)

Sintaxis

'Declaration
Public Interface ISubject(Of In TSource, Out TResult) _
    Inherits IObserver(Of TSource), IObservable(Of TResult)
'Usage
Dim instance As ISubject(Of In TSource, Out TResult)
public interface ISubject<in TSource, out TResult> : IObserver<TSource>, 
    IObservable<TResult>
generic<typename TSource, typename TResult>
public interface class ISubject : IObserver<TSource>, 
    IObservable<TResult>
type ISubject<'TSource, 'TResult> =  
    interface
        interface IObserver<'TSource>
        interface IObservable<'TResult>
    end
JScript does not support generic types and methods.

Parámetros de tipo

  • inTSource
    Tipo de origen.

    Este parámetro de tipo es contravariante, es decir, puede usar el tipo que haya especificado o cualquier tipo menos derivado. Para obtener más información sobre la covarianza y contravarianza, vea .

  • outTResult
    Tipo de resultado.

    Este parámetro de tipo es covariante, es decir, puede usar el tipo que haya especificado o cualquier tipo más derivado. Para obtener más información sobre la covarianza y contravarianza, vea .

El tipo TSource de ISubject<, TResult> expone los siguientes miembros.

Métodos

  Nombre Descripción
OnCompleted (Heredado de IObserver<TSource>).)
OnError (Heredado de IObserver<TSource>).)
OnNext (Heredado de IObserver<TSource>).)
Suscribirse (Heredado de IObservable<TResult>.)

Superior

Métodos de extensión

  Nombre Descripción
pública Método de extensión pública Aggregate<TResult>(Func<TResult, TResult, TResult>) Sobrecargado. Aplica una función de acumulador a través de una secuencia observable. (Definido por Observable).
pública Método de extensión pública Aggregate<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) Sobrecargado. Aplica una función de acumulador sobre una secuencia observable con el valor de inicialización especificado. (Definido por Observable).
pública Método de extensión pública Todos los<TResult> Determina si todos los elementos de una secuencia observable cumplen una condición. (Definido por Observable).
pública Método de extensión pública Amb<TResult> Propaga la secuencia observable que reacciona primero con la primera y la segunda secuencia especificadas. (Definido por Observable).
pública Método de extensión pública Y<TResult, TRight> Coincide cuando ambas secuencias observables tienen un valor disponible. (Definido por Observable).
pública Método de extensión pública Cualquier<TResult>() Sobrecargado. Determina si una secuencia observable contiene elementos. (Definido por Observable).
pública Método de extensión pública Any<TResult>(Func<TResult, Boolean>) Sobrecargado. Determina si todos los elementos de una secuencia observable cumplen una condición. (Definido por Observable).
pública Método de extensión pública AsObservable<TResult> Oculta la identidad de una secuencia observable. (Definido por Observable).
pública Método de extensión pública AsObserver<TSource> Oculta la identidad de un observador. (Definido por Observer).
pública Método de extensión pública AsQbservable<TResult> Convierte una secuencia observable en una secuencia observable consultable. (Definido por Qbservable).
pública Método de extensión pública AssertEqual<TResult> (Definido por Extensions).
pública Método de extensión pública Buffer<TResult>(Int32) Sobrecargado. Indica cada elemento de una secuencia observable en búferes no superpuestos consecutivos que se generan en función de la información de recuento de elementos. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan) Sobrecargado. Indica cada elemento de una secuencia observable en búferes no superpuestos consecutivos que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(Int32, Int32) Sobrecargado. Indica cada elemento de una secuencia observable en cero o más búferes que se generan en función de la información de recuento de elementos. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan, IScheduler) Sobrecargado. Indica cada elemento de una secuencia observable en búferes no superpuestos consecutivos que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan, TimeSpan) Sobrecargado. Indica cada elemento de una secuencia observable en cero o más búferes que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan, Int32) Sobrecargado. Indica cada elemento de una secuencia observable en un búfer que se envía cuando está lleno o una cantidad determinada de tiempo transcurrido. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan, TimeSpan, IScheduler) Sobrecargado. Indica cada elemento de una secuencia observable en cero o más búferes que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Buffer<TResult>(TimeSpan, Int32, IScheduler) Sobrecargado. Indica cada elemento de una secuencia observable en un búfer que se envía cuando está lleno o una cantidad determinada de tiempo transcurrido. (Definido por Observable).
pública Método de extensión pública TResult de buffer<, TBufferClosing>(Func<IObservable<TBufferClosing>>) Sobrecargado. Indica cada elemento de una secuencia observable en búferes no superpuestos consecutivos. (Definido por Observable).
pública Método de extensión pública Buffer<TResult, TBufferOpening, TBufferClosing>(IObservable<TBufferOpening>, Func<TBufferOpening, IObservable<TBufferClosing>>) Sobrecargado. Indica cada elemento de una secuencia observable consultable en búferes no superpuestos consecutivos. (Definido por Observable).
pública Método de extensión pública Catch<TResult>(IObservable<TResult>) Sobrecargado. Continúa una secuencia observable terminada por una excepción con la siguiente secuencia observable. (Definido por Observable).
pública Método de extensión pública Catch<TResult, TException>(Func<TException, IObservable<TResult>>) Sobrecargado. Continúa una secuencia observable terminada por una excepción del tipo especificado con la secuencia observable generada por el controlador. (Definido por Observable).
pública Método de extensión pública CombineLatest<TResult, TSecond, TResult> Combina dos secuencias observables en una secuencia observable mediante el uso de la función selector cada vez que una de las secuencias observables genera un elemento. (Definido por Observable).
pública Método de extensión pública Concat<TResult> Concatena dos secuencias observables. (Definido por Observable).
pública Método de extensión pública Contiene<TResult>(TResult) Sobrecargado. Determina si una secuencia observable contiene un elemento especificado mediante el comparador de igualdad predeterminado. (Definido por Observable).
pública Método de extensión pública Contiene<TResult>(TResult, IEqualityComparer<TResult>) Sobrecargado. Determina si una secuencia observable contiene un elemento especificado mediante un objeto System.Collections.Generic.IEqualityComparer&lt especificado; T&gt;. (Definido por Observable).
pública Método de extensión pública Recuento<de TResult> Devuelve un Int32 que representa el número total de elementos de una secuencia observable. (Definido por Observable).
pública Método de extensión pública DefaultIfEmpty<TResult>() Sobrecargado. Devuelve los elementos de la secuencia especificada o el valor predeterminado del parámetro de tipo en una secuencia singleton si la secuencia está vacía. (Definido por Observable).
pública Método de extensión pública DefaultIfEmpty<TResult>(TResult) Sobrecargado. Devuelve los elementos de la secuencia especificada o el valor predeterminado del parámetro de tipo en una secuencia singleton si la secuencia está vacía. (Definido por Observable).
pública Método de extensión pública Delay<TResult>(TimeSpan) Sobrecargado. Indica la secuencia observable por tiempo de vencimiento con el origen y dueTime especificados. (Definido por Observable).
pública Método de extensión pública Delay<TResult>(DateTimeOffset) Sobrecargado. Indica la secuencia observable por tiempo de vencimiento con el origen y dueTime especificados. (Definido por Observable).
pública Método de extensión pública Delay<TResult>(TimeSpan, IScheduler) Sobrecargado. Indica la secuencia observable por tiempo de vencimiento con el origen, dueTime y scheduler especificados. (Definido por Observable).
pública Método de extensión pública Delay<TResult>(DateTimeOffset, IScheduler) Sobrecargado. Indica la secuencia observable por tiempo de vencimiento con el origen, dueTime y scheduler especificados. (Definido por Observable).
pública Método de extensión pública Distinct<TResult>() Sobrecargado. Devuelve una secuencia observable que contiene solo elementos distintos con un origen especificado. (Definido por Observable).
pública Método de extensión pública Distinct<TResult>(IEqualityComparer<TResult>) Sobrecargado. Devuelve una secuencia observable que solo contiene elementos distintos según el comparador. (Definido por Observable).
pública Método de extensión pública Distinct<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Devuelve una secuencia observable que solo contiene elementos distintos según keySelector. (Definido por Observable).
pública Método de extensión pública Distinct<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) Sobrecargado. Devuelve una secuencia observable que solo contiene elementos distintos según keySelector. (Definido por Observable).
pública Método de extensión pública DistinctUntilChanged<TResult>() Sobrecargado. Devuelve una secuencia observable que contiene solo distintos elementos contiguos con un origen especificado. (Definido por Observable).
pública Método de extensión pública DistinctUntilChanged<TResult>(IEqualityComparer<TResult>) Sobrecargado. Devuelve una secuencia observable que contiene solo distintos elementos contiguos según el comparador. (Definido por Observable).
pública Método de extensión pública DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Devuelve una secuencia observable que contiene solo distintos elementos contiguos según keySelector. (Definido por Observable).
pública Método de extensión pública DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) Sobrecargado. Devuelve una secuencia observable que contiene solo distintos elementos contiguos según keySelector y el comparador. (Definido por Observable).
pública Método de extensión pública Do<TResult(Action<TResult>>) Sobrecargado. Invoca una acción para cada elemento de la secuencia observable. (Definido por Observable).
pública Método de extensión pública Do<TResult>(IObserver<TResult>) Sobrecargado. Invoca una acción para cada elemento de la secuencia observable e invoca una acción tras la finalización excepcional de la secuencia observable. (Definido por Observable).
pública Método de extensión pública Do<TResult(Action<TResult>>, Action) Sobrecargado. Invoca una acción para cada elemento de la secuencia observable e invoca una acción tras la finalización correcta de la secuencia observable. (Definido por Observable).
pública Método de extensión pública Do<TResult(Action<TResult>>, Action<Exception>) Sobrecargado. Invoca una acción para cada elemento de la secuencia observable e invoca una acción tras la finalización excepcional de la secuencia observable. (Definido por Observable).
pública Método de extensión pública Do<TResult(Action<TResult>>, Action<Exception>, Action) Sobrecargado. Invoca una acción para cada elemento de la secuencia observable e invoca una acción tras la finalización correcta o excepcional de la secuencia observable. (Definido por Observable).
pública Método de extensión pública ElementAt<TResult> Devuelve el elemento situado en un índice especificado de una secuencia. (Definido por Observable).
pública Método de extensión pública ElementAtOrDefault<TResult> Devuelve el elemento situado en un índice especificado de una secuencia o un valor predeterminado si el índice está fuera del intervalo. (Definido por Observable).
pública Método de extensión pública Por último<, TResult> Invoca una acción especificada después de que la secuencia observable de origen finalice normalmente o mediante una excepción. (Definido por Observable).
pública Método de extensión pública First<TResult>() Sobrecargado. Devuelve el primer elemento de una secuencia observable con un origen especificado. (Definido por Observable).
pública Método de extensión pública First<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el primer elemento de una secuencia observable que coincide con el predicado. (Definido por Observable).
pública Método de extensión pública FirstOrDefault<TResult>() Sobrecargado. Devuelve el primer elemento de una secuencia observable o un valor predeterminado si no se encuentra ningún valor. (Definido por Observable).
pública Método de extensión pública FirstOrDefault<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el primer elemento de una secuencia observable que coincide con el predicado o un valor predeterminado si no se encuentra ningún valor. (Definido por Observable).
pública Método de extensión pública Foo<TResult, R> (Definido por MyExt).
pública Método de extensión pública ForEach<TResult> Invoca una acción para cada elemento de la secuencia observable y se bloquea hasta que finaliza la secuencia. (Definido por Observable).
pública Método de extensión pública GetEnumerator<TResult> Devuelve un enumerador que enumera todos los valores de la secuencia observable. (Definido por Observable).
pública Método de extensión pública GroupBy<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función de selector de claves especificada. (Definido por Observable).
pública Método de extensión pública GroupBy<TResult, TKey>(Func<TResult, TKey, IEqualityComparer<TKey>>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función y comparador de selector de claves especificados. (Definido por Observable).
pública Método de extensión pública GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) Sobrecargado. Agrupa los elementos de una secuencia observable y selecciona los elementos resultantes mediante una función especificada. (Definido por Observable).
pública Método de extensión pública GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función y comparador de selector de claves especificados y selecciona los elementos resultantes mediante una función especificada. (Definido por Observable).
pública Método de extensión pública GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable<TKey, TResult>, IObservable<TDuration>>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función de selector de claves especificada. (Definido por Observable).
pública Método de extensión pública GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable TKey, TResult>, IObservable<<TDuration>>, IEqualityComparer<TKey>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función y comparador de selector de claves especificados. (Definido por Observable).
pública Método de extensión pública GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función de selector de claves especificada y selecciona los elementos resultantes mediante una función especificada. (Definido por Observable).
pública Método de extensión pública GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable TKey, TElement>, IObservable<<TDuration>>, IEqualityComparer<TKey>) Sobrecargado. Agrupa los elementos de una secuencia observable según una función y comparador de selector de claves especificados y selecciona los elementos resultantes mediante una función especificada. (Definido por Observable).
pública Método de extensión pública GroupJoin<TResult, TRight, TLeftDuration, TRightDuration, TResult> Correlaciona los elementos de dos secuencias en función de duraciones superpuestas y agrupa los resultados. (Definido por Observable).
pública Método de extensión pública IgnoreElements<TResult> Omite todos los valores de una secuencia observable dejando solo los mensajes de finalización. (Definido por Observable).
pública Método de extensión pública Join<TResult, TRight, TLeftDuration, TRightDuration, TResult> Correlaciona los elementos de dos secuencias en función de duraciones superpuestas. (Definido por Observable).
pública Método de extensión pública Last<TResult>() Sobrecargado. Devuelve el último elemento de una secuencia observable con un origen especificado. (Definido por Observable).
pública Método de extensión pública Last<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el último elemento de una secuencia observable que coincide con el predicado. (Definido por Observable).
pública Método de extensión pública LastOrDefault<TResult>() Sobrecargado. Devuelve el último elemento de la secuencia observable o un valor predeterminado si no se encuentra ningún valor. (Definido por Observable).
pública Método de extensión pública LastOrDefault<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el último elemento de una secuencia observable que coincide con el predicado o un valor predeterminado si no se encuentra ningún valor. (Definido por Observable).
pública Método de extensión pública TResult más reciente<> Muestra el valor más reciente en una secuencia observable. (Definido por Observable).
pública Método de extensión pública LongCount<TResult> Devuelve un Int64 que representa el número total de elementos de una secuencia observable. (Definido por Observable).
pública Método de extensión pública Materializar<TResult> Materializa las notificaciones implícitas de una secuencia observable como valores de notificación explícitos. (Definido por Observable).
pública Método de extensión pública Max<TResult>() Sobrecargado. Devuelve el elemento máximo de una secuencia observable. (Definido por Observable).
pública Método de extensión pública Max<TResult>(IComparer<TResult>) Sobrecargado. Devuelve el valor máximo de una secuencia observable según el comparador especificado. (Definido por Observable).
pública Método de extensión pública MaxBy<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Devuelve los elementos de una secuencia observable con el valor de clave máximo. (Definido por Observable).
pública Método de extensión pública MaxBy<TResult, TKey>(Func<TResult, TKey, IComparer<TKey>>) Sobrecargado. Devuelve los elementos de una secuencia observable con el valor de clave máximo. (Definido por Observable).
pública Método de extensión pública Merge<TResult>(IObservable<TResult>) Sobrecargado. Combina una secuencia observable de secuencias observables en una secuencia observable. (Definido por Observable).
pública Método de extensión pública Merge<TResult>(IObservable<TResult>, IScheduler) Sobrecargado. Combina dos secuencias observables en una sola secuencia observable. (Definido por Observable).
pública Método de extensión pública Min<TResult>() Sobrecargado. Devuelve el elemento mínimo de una secuencia observable. (Definido por Observable).
pública Método de extensión pública Min<TResult>(IComparer<TResult>) Sobrecargado. Devuelve el valor mínimo de una secuencia observable según el comparador especificado. (Definido por Observable).
pública Método de extensión pública MinBy<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Devuelve los elementos de una secuencia observable con el valor de clave mínimo. (Definido por Observable).
pública Método de extensión pública MinBy<TResult, TKey>(Func<TResult, TKey, IComparer<TKey>>) Sobrecargado. Devuelve los elementos de una secuencia observable con el valor de clave mínimo según el comparador especificado. (Definido por Observable).
pública Método de extensión pública MostRecent<TResult> Muestra el valor más reciente en una secuencia observable. (Definido por Observable).
pública Método de extensión pública TResult de multidifusión<, TResult>(ISubject<TResult, TResult>) Sobrecargado. Devuelve una secuencia observable conectable que tras la conexión hace que la secuencia de origen inserte los resultados en el asunto especificado. (Definido por Observable).
pública Método de extensión pública TResult de multidifusión<, TIntermediate, TResult>(Func<ISubject<TResult, TIntermediate>>, Func<IObservable<TIntermediate>, IObservable<TResult>>) Sobrecargado. Devuelve una secuencia observable que contiene los elementos de una secuencia generada por la multidifusión de la secuencia de origen dentro de una función selectora. (Definido por Observable).
pública Método de extensión pública Siguiente<TResult> Muestra el siguiente valor (bloqueo sin almacenamiento en búfer) de en una secuencia observable. (Definido por Observable).
pública Método de extensión pública ObserveOn<TResult>(SynchronizationContext) Sobrecargado. Notificar de forma asincrónica a los observadores en el contexto de sincronización especificado. (Definido por Observable).
pública Método de extensión pública ObserveOn<TResult>(Control) Sobrecargado. (Definido por ControlObservable).
pública Método de extensión pública ObserveOn<TResult>(Dispatcher) Sobrecargado. (Definido por DispatcherObservable).
pública Método de extensión pública ObserveOn<TResult>(DispatcherScheduler) Sobrecargado. (Definido por DispatcherObservable).
pública Método de extensión pública ObserveOn<TResult>(IScheduler) Sobrecargado. Notificar de forma asincrónica a los observadores en el programador especificado. (Definido por Observable).
pública Método de extensión pública ObserveOnDispatcher<TResult> (Definido por DispatcherObservable).
pública Método de extensión pública OnErrorResumeNext<TResult> Continúa una secuencia observable que finaliza normalmente o mediante una excepción con la siguiente secuencia observable. (Definido por Observable).
pública Método de extensión pública Publicar<TResult>() Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente. (Definido por Observable).
pública Método de extensión pública Publicar<TResult>(TResult) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente y comienza por initialValue. (Definido por Observable).
pública Método de extensión pública Publicar<TResult, TResult>(Func<IObservable<TResult, IObservable<TResult>>>) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente. (Definido por Observable).
pública Método de extensión pública Publicar<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TResult) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente y comienza por initialValue. (Definido por Observable).
pública Método de extensión pública PublishLast<TResult>() Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que contiene solo la última notificación. (Definido por Observable).
pública Método de extensión pública PublishLast<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que contiene solo la última notificación. (Definido por Observable).
pública Método de extensión pública Repetir<TResult>() Sobrecargado. Repite la secuencia observable indefinidamente. (Definido por Observable).
pública Método de extensión pública Repeat<TResult>(Int32) Sobrecargado. Repite la secuencia observable indefinidamente. (Definido por Observable).
pública Método de extensión pública Replay<TResult>() Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que reproduce todas las notificaciones. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(TimeSpan) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que reproduce todas las notificaciones dentro de la ventana. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(Int32) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a las notificaciones bufferSize de reproducción de secuencia subyacente. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(IScheduler) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que reproduce todas las notificaciones. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(TimeSpan, IScheduler) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente que reproduce todas las notificaciones dentro de la ventana. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(Int32, IScheduler) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción a las notificaciones bufferSize de reproducción de secuencia subyacente. (Definido por Observable).
pública Método de extensión pública Replay<TResult>(Int32, TimeSpan) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción al búfer de reproducción de secuencias subyacenteSize notifications within window . (Definido por Observable).
pública Método de extensión pública Replay<TResult>(Int32, TimeSpan, IScheduler) Sobrecargado. Devuelve una secuencia observable conectable que comparte una sola suscripción al búfer de reproducción de secuencias subyacenteSize notifications within window . (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult, IObservable<TResult>>>) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente y comienza por el valor inicial. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, IScheduler) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente reproduciendo todas las notificaciones. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente reproduciendo todas las notificaciones dentro de la ventana. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción al búfer de reproducción de secuencias subyacenteSize notifications. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan, IScheduler) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente reproduciendo todas las notificaciones dentro de la ventana. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, IScheduler) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción al búfer de reproducción de secuencias subyacenteSize notifications. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción al búfer de reproducción de secuencias subyacenteSize notifications within window. (Definido por Observable).
pública Método de extensión pública Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan, IScheduler) Sobrecargado. Devuelve una secuencia observable que es el resultado de invocar el selector en una secuencia observable conectable que comparte una sola suscripción a la secuencia subyacente replaying bufferSize notifications within window. (Definido por Observable).
pública Método de extensión pública Reintentar<TResult>() Sobrecargado. Repite la secuencia observable de origen hasta que finaliza correctamente. (Definido por Observable).
pública Método de extensión pública Retry<TResult>(Int32) Sobrecargado. Repite la secuencia observable de origen hasta que finaliza correctamente. (Definido por Observable).
pública Método de extensión pública Sample<TResult>(TimeSpan) Sobrecargado. Muestrea la secuencia observable en cada intervalo. (Definido por Observable).
pública Método de extensión pública Sample<TResult>(TimeSpan, IScheduler) Sobrecargado. Muestra la secuencia observable en cada intervalo con el origen, el intervalo y el programador especificados. (Definido por Observable).
pública Método de extensión pública Ejemplo<de TResult, TSample>(IObservable<TSample>) Sobrecargado. Muestra la secuencia observable en tics de muestreo con el origen y el sampler especificados. (Definido por Observable).
pública Método de extensión pública Scan<TResult>(Func<TResult, TResult, TResult>) Sobrecargado. Aplica una función de acumulador sobre una secuencia observable y devuelve cada resultado intermedio con el origen y el acumulador especificados. (Definido por Observable).
pública Método de extensión pública Scan<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) Sobrecargado. Aplica una función de acumulador sobre una secuencia observable y devuelve cada resultado intermedio con el origen, inicialización y acumulador especificados. (Definido por Observable).
pública Método de extensión pública Seleccione<TResult, TResult>(Func<TResult, TResult>) Sobrecargado. Proyecta cada elemento de una secuencia observable en un nuevo formulario con el origen y el selector especificados. (Definido por Observable).
pública Método de extensión pública Seleccione<TResult, TResult>(Func<TResult, Int32, TResult>) Sobrecargado. Proyecta cada elemento de una secuencia observable en un nuevo formulario incorporando el índice del elemento con el origen y el selector especificados. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TOther>(IObservable<TOther>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TResult(Func<TResult>, IObservable<TResult>>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TResult(Func<TResult>, IEnumerable<TResult>>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TResult(Func<TResult>, IObservable<TResult>>, Func<Exception, IObservable<TResult>>, Func<IObservable<TResult>>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TCollection, TResult(Func<TResult>, IEnumerable<TCollection>>, Func<TResult, TCollection, TResult>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SelectMany<TResult, TCollection, TResult(Func<TResult>, IObservable<TCollection>>, Func<TResult, TCollection, TResult>) Sobrecargado. Proyecta cada elemento de una secuencia observable en una secuencia observable y acopla las secuencias observables resultantes en una secuencia observable. (Definido por Observable).
pública Método de extensión pública SequenceEqual<TResult>(IObservable<TResult>) Sobrecargado. Determina si dos secuencias son iguales comparando los elementos en pares. (Definido por Observable).
pública Método de extensión pública SequenceEqual<TResult>(IObservable<TResult>, IEqualityComparer<TResult>) Sobrecargado. Determina si dos secuencias son iguales comparando los elementos en pares mediante un comparador de igualdad especificado. (Definido por Observable).
pública Método de extensión pública TResult>() único< Sobrecargado. Devuelve el único elemento de una secuencia observable y produce una excepción si no hay exactamente un elemento en la secuencia observable. (Definido por Observable).
pública Método de extensión pública Single<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el único elemento de una secuencia observable que coincide con el predicado y produce una excepción si no hay exactamente un elemento en la secuencia observable. (Definido por Observable).
pública Método de extensión pública SingleOrDefault<TResult>() Sobrecargado. Devuelve el único elemento de una secuencia observable o un valor predeterminado si la secuencia observable está vacía. (Definido por Observable).
pública Método de extensión pública SingleOrDefault<TResult>(Func<TResult, Boolean>) Sobrecargado. Devuelve el único elemento de una secuencia observable que coincide con el predicado o un valor predeterminado si no se encuentra ningún valor. (Definido por Observable).
pública Método de extensión pública Omitir<TResult> Omite un número especificado de valores en una secuencia observable y, a continuación, devuelve los valores restantes. (Definido por Observable).
pública Método de extensión pública SkipLast<TResult> Omite un número especificado de elementos al final de una secuencia observable. (Definido por Observable).
pública Método de extensión pública SkipUntil<TResult, TOther> Devuelve los valores de la secuencia observable de origen solo después de que la otra secuencia observable genere un valor. (Definido por Observable).
pública Método de extensión pública SkipWhile<TResult>(Func<TResult, Boolean>) Sobrecargado. Omite los valores de una secuencia observable siempre que una condición especificada sea true y, a continuación, devuelve los valores restantes. (Definido por Observable).
pública Método de extensión pública SkipWhile<TResult>(Func<TResult, Int32, Boolean>) Sobrecargado. Omite los valores de una secuencia observable siempre que una condición especificada sea true y, a continuación, devuelve los valores restantes. (Definido por Observable).
pública Método de extensión pública StartWith<TResult>TResult[]) Sobrecargado. Antepone una secuencia de valores a una secuencia observable con el origen y los valores especificados. (Definido por Observable).
pública Método de extensión pública StartWith<TResult>(IScheduler, TResult[]) Sobrecargado. Antepone una secuencia de valores a una secuencia observable con el origen, el programador y los valores especificados. (Definido por Observable).
pública Método de extensión pública Suscribirse<a TResult>() Sobrecargado. Evalúa la secuencia observable con un origen especificado. (Definido por ObservableExtensions).
pública Método de extensión pública Subscribe<TResult>(Action<TResult>) Sobrecargado. Suscribe un controlador de elementos a una secuencia observable. (Definido por ObservableExtensions).
pública Método de extensión pública Subscribe<TResult>(Action TResult>, Action<<Exception>) Sobrecargado. Suscribe un controlador de elementos y un controlador de excepciones a una secuencia observable. (Definido por ObservableExtensions).
pública Método de extensión pública Subscribe<TResult>(Action<TResult>, Action) Sobrecargado. Suscribe un controlador de elementos y un controlador de finalización a una secuencia observable. (Definido por ObservableExtensions).
pública Método de extensión pública Suscribir<TResult>(Action<TResult>, Action<Exception>, Action) Sobrecargado. Suscribe un controlador de elementos, un controlador de excepciones y un controlador de finalización a una secuencia observable. (Definido por ObservableExtensions).
pública Método de extensión pública SubscribeOn<TResult>(SynchronizationContext) Sobrecargado. Suscribe y cancela la suscripción asincrónica a los observadores en el contexto de sincronización especificado. (Definido por Observable).
pública Método de extensión pública SubscribeOn<TResult>(Control) Sobrecargado. (Definido por ControlObservable).
pública Método de extensión pública SubscribeOn<TResult>(Dispatcher) Sobrecargado. (Definido por DispatcherObservable).
pública Método de extensión pública SubscribeOn<TResult>(DispatcherScheduler) Sobrecargado. (Definido por DispatcherObservable).
pública Método de extensión pública SubscribeOn<TResult>(IScheduler) Sobrecargado. Suscribe y cancela la suscripción asincrónica a los observadores en el programador especificado. (Definido por Observable).
pública Método de extensión pública SubscribeOnDispatcher<TResult> (Definido por DispatcherObservable).
pública Método de extensión pública Sincronizar<TResult>() Sobrecargado. Sincroniza la secuencia observable. (Definido por Observable).
pública Método de extensión pública Synchronize<TResult>(Object) Sobrecargado. Sincroniza la secuencia observable. (Definido por Observable).
pública Método de extensión pública Tomar<TResult> Devuelve un número especificado de valores contiguos desde el principio de una secuencia observable. (Definido por Observable).
pública Método de extensión pública TakeLast<TResult> Devuelve un número especificado de elementos contiguos desde el final de una secuencia observable. (Definido por Observable).
pública Método de extensión pública TakeUntil<TResult, TOther> Devuelve los valores de la secuencia observable de origen hasta que la otra secuencia observable genera un valor. (Definido por Observable).
pública Método de extensión pública TakeWhile<TResult(Func<TResult>, Boolean>) Sobrecargado. Devuelve valores de una secuencia observable siempre que una condición especificada sea true y, a continuación, omite los valores restantes. (Definido por Observable).
pública Método de extensión pública TakeWhile<TResult>(Func<TResult, Int32, Boolean>) Sobrecargado. Devuelve valores de una secuencia observable siempre que una condición especificada sea true y, a continuación, omite los valores restantes. (Definido por Observable).
pública Método de extensión pública A continuación<, TResult, TResult> Coincide cuando la secuencia observable tiene un valor disponible y proyecta el valor. (Definido por Observable).
pública Método de extensión pública Throttle<TResult>(TimeSpan) Sobrecargado. Omite los valores de una secuencia observable seguida de otro valor antes del tiempo de vencimiento con el origen y dueTime especificados. (Definido por Observable).
pública Método de extensión pública Throttle<TResult>(TimeSpan, IScheduler) Sobrecargado. Omite los valores de una secuencia observable seguida de otro valor antes del tiempo de vencimiento con el origen, dueTime y scheduler especificados. (Definido por Observable).
pública Método de extensión pública TimeInterval<TResult>() Sobrecargado. Registra el intervalo de tiempo entre valores consecutivos en una secuencia observable con el origen especificado. (Definido por Observable).
pública Método de extensión pública TimeInterval<TResult>(IScheduler) Sobrecargado. Registra el intervalo de tiempo entre valores consecutivos en una secuencia observable con el origen y el programador especificados. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(TimeSpan) Sobrecargado. Devuelve la secuencia observable o timeoutException si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(DateTimeOffset) Sobrecargado. Devuelve la secuencia observable o timeoutException si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(TimeSpan, IObservable<TResult>) Sobrecargado. Devuelve la secuencia observable de origen o la otra secuencia observable si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(DateTimeOffset, IObservable<TResult>) Sobrecargado. Devuelve la secuencia observable o timeoutException si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(TimeSpan, IScheduler) Sobrecargado. Devuelve la secuencia observable o timeoutException si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(DateTimeOffset, IScheduler) Sobrecargado. Devuelve la secuencia observable o timeoutException si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(TimeSpan, IObservable<TResult>, IScheduler) Sobrecargado. Devuelve la secuencia observable de origen o la otra secuencia observable si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Timeout<TResult>(DateTimeOffset, IObservable<TResult>, IScheduler) Sobrecargado. Devuelve la secuencia observable de origen o la otra secuencia observable si transcurre dueTime. (Definido por Observable).
pública Método de extensión pública Marca de tiempo<TResult>() Sobrecargado. Registra la marca de tiempo de cada valor de una secuencia observable con el origen especificado. (Definido por Observable).
pública Método de extensión pública Marca de<tiempo TResult>(IScheduler) Sobrecargado. Registra la marca de tiempo de cada valor de una secuencia observable con el origen y el programador especificados. (Definido por Observable).
pública Método de extensión pública ToArray<TResult> Crea una matriz a partir de una secuencia observable. (Definido por Observable).
pública Método de extensión pública ToDictionary<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Crea un diccionario a partir de una secuencia observable según una función de selector de claves especificada. (Definido por Observable).
pública Método de extensión pública ToDictionary<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) Sobrecargado. Crea un diccionario a partir de una secuencia observable según una función de selector de claves especificada y un comparador. (Definido por Observable).
pública Método de extensión pública ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) Sobrecargado. Crea un diccionario a partir de una secuencia observable según una función de selector de claves especificada y una función de selector de elementos. (Definido por Observable).
pública Método de extensión pública ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) Sobrecargado. Crea un diccionario a partir de una secuencia observable según una función de selector de claves especificada, un comparador y una función de selector de elementos. (Definido por Observable).
pública Método de extensión pública ToEnumerable<TResult> Convierte una secuencia observable en una secuencia enumerable. (Definido por Observable).
pública Método de extensión pública ToEvent<TResult> Expone una secuencia observable como un objeto con un evento de .NET con un origen especificado. (Definido por Observable).
pública Método de extensión pública ToList<TResult> Crea una lista a partir de una secuencia observable. (Definido por Observable).
pública Método de extensión pública ToLookup<TResult, TKey>(Func<TResult, TKey>) Sobrecargado. Crea una búsqueda a partir de una secuencia observable según una función de selector de claves especificada. (Definido por Observable).
pública Método de extensión pública ToLookup<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) Sobrecargado. Crea una búsqueda a partir de una secuencia observable según una función de selector de claves especificada y un comparador. (Definido por Observable).
pública Método de extensión pública ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) Sobrecargado. Crea una búsqueda a partir de una secuencia observable según una función de selector de claves especificada y una función de selector de elementos. (Definido por Observable).
pública Método de extensión pública ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) Sobrecargado. Crea una búsqueda a partir de una secuencia observable según una función de selector de claves especificada, un comparador y una función de selector de elementos. (Definido por Observable).
pública Método de extensión pública ToNotifier<TSource> Crea una devolución de llamada de notificación a partir de un observador. (Definido por Observer).
pública Método de extensión pública ToTask<TResult>() Sobrecargado. Devuelve una tarea que contiene el último valor de la secuencia observable. (Definido por TaskObservableExtensions).
pública Método de extensión pública ToTask<TResult>(Object) Sobrecargado. Devuelve una tarea que contiene el último valor de la secuencia observable. (Definido por TaskObservableExtensions).
pública Método de extensión pública ToTask<TResult>(CancellationToken) Sobrecargado. Devuelve una tarea que contiene el último valor de la secuencia observable. (Definido por TaskObservableExtensions).
pública Método de extensión pública ToTask<TResult>(CancellationToken, Object) Sobrecargado. Devuelve una tarea que contiene el último valor de la secuencia observable. (Definido por TaskObservableExtensions).
pública Método de extensión pública Where<TResult>(Func<TResult, Boolean>) Sobrecargado. Filtra los elementos de una secuencia observable en función de un predicado. (Definido por Observable).
pública Método de extensión pública Where<TResult>(Func<TResult, Int32, Boolean>) Sobrecargado. Filtra los elementos de una secuencia observable en función de un predicado mediante la incorporación del índice del elemento. (Definido por Observable).
pública Método de extensión pública Window<TResult>(Int32) Sobrecargado. Proyecta cada elemento de una secuencia observable en ventanas no superpuestas consecutivas que se generan en función de la información de recuento de elementos. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan) Sobrecargado. Proyecta cada elemento de una secuencia observable en ventanas no superpuestas consecutivas que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Window<TResult>(Int32, Int32) Sobrecargado. Proyecta cada elemento de una secuencia observable en cero o más ventanas que se generan en función de la información de recuento de elementos. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan, IScheduler) Sobrecargado. Proyecta cada elemento de una secuencia observable en ventanas consecutivas no superpuestas que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan, TimeSpan) Sobrecargado. Proyecta cada elemento de una secuencia observable en cero o más ventanas que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan, Int32) Sobrecargado. Proyecta cada elemento de una secuencia observable en una ventana que se completa cuando está lleno o ha transcurrido un período de tiempo determinado. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan, TimeSpan, IScheduler) Sobrecargado. Proyecta cada elemento de una secuencia observable en cero o más ventanas que se generan en función de la información de tiempo. (Definido por Observable).
pública Método de extensión pública Window<TResult>(TimeSpan, Int32, IScheduler) Sobrecargado. Proyecta cada elemento de una secuencia observable en una ventana que se completa cuando está lleno o ha transcurrido un período de tiempo determinado. (Definido por Observable).
pública Método de extensión pública Window<TResult, TWindowClosing>(Func<IObservable<TWindowClosing>>) Sobrecargado. Proyecta cada elemento de una secuencia observable en ventanas consecutivas no superpuestas. (Definido por Observable).
pública Método de extensión pública Window<TResult, TWindowOpening, TWindowClosing>(IObservable<TWindowOpening>, Func<TWindowOpening, IObservable<TWindowClosing>>) Sobrecargado. Proyecta cada elemento de una secuencia observable en cero o más ventanas. (Definido por Observable).
pública Método de extensión pública Zip<TResult, TSecond, TResult>(IObservable<TSecond>, Func<TResult, TSecond, TResult>) Sobrecargado. Combina dos secuencias observables en una secuencia observable mediante la combinación de sus elementos de forma emparejada. (Definido por Observable).
pública Método de extensión pública Zip<TResult, TSecond, TResult>(IEnumerable<TSecond>, Func<TResult, TSecond, TResult>) Sobrecargado. Combina una secuencia observable y una secuencia enumerable en una secuencia observable mediante la función selector. (Definido por Observable).

Superior

Comentarios

Esta interfaz de asunto proporciona flexibilidad a un sujeto para observar una secuencia observable de un tipo al publicar una secuencia observable de otro tipo.

Ejemplos

En este ejemplo se muestra cómo implementar un TSource de ISubject<, TResult> , que observa una secuencia observable de un tipo al publicar una secuencia observable de otro tipo. El AsciiConverterSubject de este ejemplo muestra la implementación observando secuencias de tipo char y publicando una secuencia observable de int. La secuencia observable publicada de int es el código ASCII para cada valor char que observa.

using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Reactive.Concurrency;
using System.Reactive.Disposables;
using System.Threading;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //****************************************************************************************//
      //*** Create an observable sequence of char from console input until enter is pressed. ***//
      //****************************************************************************************//
      IObservable<char> keySequence = Observable.Create<char>(observer =>
      {
        bool bContinue = true;

        while (bContinue)
        {
          ConsoleKeyInfo keyInfo = Console.ReadKey(true);

          if (keyInfo.Key != ConsoleKey.Enter)
          {
            observer.OnNext(keyInfo.KeyChar);
          }
          else
          {
            observer.OnCompleted();
            bContinue = false;
          }
        }

        return (() => { });
      });


      //****************************************************************************************//
      //*** Create an AsciiConverterSubject which takes a source type of char and returns an ***//
      //*** observable sequence of int which is the ASCII code for source items of char.     ***//
      //****************************************************************************************//

      AsciiConverterSubject myConverterSubject = new AsciiConverterSubject();


      //****************************************************************************************//
      //*** Subscribe to the keySequence on the .NET threadpool so the main thread can       ***//
      //*** create subscriptions to the AsciiConverterSubject                                ***//
      //****************************************************************************************//

      IDisposable subscription = keySequence.SubscribeOn(Scheduler.ThreadPool).Subscribe(myConverterSubject);


      Console.WriteLine("\nEnter a sequence of keys to have the AsciiConverterSubject\nconvert the keys to their ASCII code values.\n"); 
      Console.WriteLine("Press ENTER to terminate the observable sequence...\n");


      //****************************************************************************************//
      //*** Subscribe to the AsciiConverterSubject and write the ASCII code values to the    ***//
      //*** console window.                                                                  ***//
      //***                                                                                  ***//
      //*** The main thread will wait on the completion of the keySequence. It completes     ***//
      //*** when ENTER is pressed.                                                           ***//
      //****************************************************************************************//

      EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
      myConverterSubject.Subscribe(c => Console.WriteLine("Ascii Char code {0} entered.",c), () => waitHandle.Set());
      waitHandle.WaitOne();


      //***************************************//
      //*** Explicitly releasing resources. ***//
      //***************************************//
      
      subscription.Dispose();
      myConverterSubject.Dispose();
    }
  }



  //***********************************************************************************************//
  //***                                                                                         ***//
  //*** The AsciiConverterSubject demonstrates an implementation of ISubject<TSource, TResult>. ***//
  //*** It is used to subscribe to an observable sequence of char. It publishes an observable   ***//
  //*** sequence of int which should be the ASCII code for each char value it observes.         ***//
  //***                                                                                         ***//
  //***********************************************************************************************//

  class AsciiConverterSubject : ISubject<char, int>, IDisposable
  {
    private List<IObserver<int>> observerList;
    private bool isDisposed;
    private bool isStopped;
    object gate = new object();
    Exception exception;

    public AsciiConverterSubject()
    {
      observerList = new List<IObserver<int>>();
    }

    public void OnCompleted()
    {
      //****************************************************************************************//
      //*** Make sure the OnCompleted operation is not preempted by another operation        ***//
      //*** which would break the expected behavior.  For example, don't allow an error from ***//
      //*** OnError preempt OnCompleted from anotther thread. Then OnCompleted would follow  ***//
      //*** an error.  That would be an incorrect behavior.                                  ***//
      //****************************************************************************************//

      lock (gate)
      {
        CheckDisposed();

        if (!isStopped)
        {
          foreach (IObserver<int> observer in observerList)
          {
            observer.OnCompleted();
          }

          observerList.Clear();
          isStopped = true;
        }
      }
    }

    public void OnError(Exception error)
    {
      if (error == null)
        throw new ArgumentException("Exception error should not be null.");

      //****************************************************************************************//
      //*** Make sure the OnError operation is not preempted by another operation which      ***//
      //*** would break the expected behavior.  For example, don't allow unsubscribe or an   ***//
      //*** OnCompleted operation to preempt OnError from another thread. This would result  ***//
      //*** in an error following completion.  That would be an incorrect behavior.          ***//
      //****************************************************************************************//

      lock (gate)
      {
        CheckDisposed();

        if (!isStopped)
        {
          exception = error;

          foreach (IObserver<int> observer in observerList)
          {
            observer.OnError(error);
          }

          observerList.Clear();
          isStopped = true;
        }
      }
    }

    public void OnNext(char value)
    {
      //****************************************************************************************//
      //*** Make sure the OnNext operation is not preempted by another operation which       ***//
      //*** would break the expected behavior.  For example, don't allow unsubscribe, errors ***//
      //*** or an OnCompleted operation to preempt OnNext from another thread. This would    ***//
      //*** have the result of items in a sequence following completion, errors, or          ***//
      //*** unsubscribe.  That would be an incorrect behavior.                               ***//
      //****************************************************************************************//

      lock (gate)
      {
        CheckDisposed();

        if (!isStopped)
        {
          foreach (IObserver<int> observer in observerList)
          {
            observer.OnNext(Convert.ToInt32(value));
          }
        }
      }
    }

    public IDisposable Subscribe(IObserver<int> observer)
    {
      if (observer == null)
        throw new ArgumentException("observer should not BehaviorSubject null.");

      //****************************************************************************************//
      //*** Make sure Subscribe occurs in sync with the other operations so we keep the      ***//
      //*** correct behavior depending on whether an error has occurred or the observable    ***//
      //*** sequence has completed.                                                          ***//
      //****************************************************************************************//

      lock (gate)
      {
        CheckDisposed();

        if (!isStopped)
        {
          observerList.Add(observer);
          return new Subscription(observer, this);
        }
        else if (exception != null)
        {
          observer.OnError(exception);
          return Disposable.Empty;
        }
        else
        {
          observer.OnCompleted();
          return Disposable.Empty;
        }
      }
    }

    private void Unsubscribe(IObserver<int> observer)
    {
      //****************************************************************************************//
      //*** Make sure Unsubscribe occurs in sync with the other operations so we keep the    ***//
      //*** correct behavior.                                                                ***//
      //****************************************************************************************//

      lock (gate)
      {
        observerList.Remove(observer);
      }
    }

    public void Dispose()
    {
      //****************************************************************************************//
      //*** Make sure Dispose occurs in sync with the other operations so we keep the        ***//
      //*** correct behavior. For example, Dispose shouldn't preempt the other operations    ***//
      //*** changing state variables after they have been checked.                           ***//
      //****************************************************************************************//

      lock (gate)
      {
        observerList.Clear();
        isStopped = true;
        isDisposed = true;
      }
    }

    private void CheckDisposed()
    {
      if (isDisposed)
        throw new ObjectDisposedException("Subject has been disposed.");
    }


    //************************************************************************************//
    //***                                                                              ***//
    //*** The Subscription class wraps each observer that creates a subscription. This ***//
    //*** is needed to expose an IDisposable interface through which a observer can    ***//
    //*** cancel the subscription.                                                     ***//
    //***                                                                              ***//
    //************************************************************************************//

    class Subscription : IDisposable
    {
      private AsciiConverterSubject subject;
      private IObserver<int> observer;

      public Subscription(IObserver<int> obs, AsciiConverterSubject sub)
      {
        subject = sub;
        observer = obs;
      }

      public void Dispose()
      {
        subject.Unsubscribe(observer);
      }
    }
  }
}

El código de ejemplo generó la siguiente salida.

Enter a sequence of keys to have the AsciiConverterSubject
convert the keys to their ASCII code values.

Press ENTER to terminate the observable sequence...

Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 100 entered.
Ascii Char code 107 entered.
Ascii Char code 102 entered.
Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 100 entered.
Ascii Char code 107 entered.
Ascii Char code 102 entered.
Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 107 entered.
Ascii Char code 100 entered.
Ascii Char code 59 entered.
Ascii Char code 102 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 107 entered.
Ascii Char code 100 entered.

Consulte también

Referencia

Espacio de nombres System.Reactive.Subjects