ISubject<TSource, TResult> Interface
Représente un objet qui est à la fois une séquence observable et un observateur.
Espace de noms :System.Reactive.Subjects
Assemblée: System.Reactive (en System.Reactive.dll)
Syntaxe
'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.
Paramètres de type
inTSource
Type de la source.Ce paramètre de type est contravariant. Cela signifie que vous pouvez utiliser le type spécifié ou tout type moins dérivé. Pour plus d’informations sur la covariance et la contravariance, consultez .
outTResult
Type de résultat.Ce paramètre de type est covariant. Cela signifie que vous pouvez utiliser le type spécifié ou tout type plus dérivé. Pour plus d’informations sur la covariance et la contravariance, consultez .
Le type ISubject<TSource, TResult> expose les membres suivants.
Méthodes
Nom | Description | |
---|---|---|
OnCompleted | (Hérité d’IObserver<TSource>.) | |
OnError | (Hérité d’IObserver<TSource>.) | |
OnNext | (Hérité d’IObserver<TSource>.) | |
S’abonner | (Hérité de IObservable<Résultat.>) |
Haut
Méthodes d’extension
Nom | Description | |
---|---|---|
Agrégat<TResult>(Func<TResult, TResult, TResult>) | Surchargé. Applique une fonction d’accumulateur sur une séquence observable. (Défini par Observable.) | |
Agrégat<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) | Surchargé. Applique une fonction d’accumulateur sur une séquence observable avec la valeur initiale spécifiée. (Défini par Observable.) | |
Tous les<résultats> | Détermine si tous les éléments d’une séquence observable répondent à une condition. (Défini par Observable.) | |
Amb<TResult> | Propage la séquence observable qui réagit en premier avec les première et deuxième séquences spécifiées. (Défini par Observable.) | |
And<TResult, TRight> | Correspond lorsque les deux séquences observables ont une valeur disponible. (Défini par Observable.) | |
Any<TResult>() | Surchargé. Détermine si une séquence observable contient des éléments. (Défini par Observable.) | |
Any<TResult>(Func<TResult, Boolean>) | Surchargé. Détermine si tous les éléments d’une séquence observable répondent à une condition. (Défini par Observable.) | |
AsObservable<TResult> | Masque l’identité d’une séquence observable. (Défini par Observable.) | |
AsObserver<TSource> | Masque l’identité d’un observateur. (Défini par l’observateur.) | |
TResult asQbservable<> | Convertit une séquence observable en séquence observable interrogeable. (Défini par Qbservable.) | |
AssertEqual<TResult> | (Défini par des extensions.) | |
Mémoire tampon<TResult>(Int32) | Surchargé. Indique chaque élément d’une séquence observable dans des mémoires tampons consécutives sans chevauchement qui sont produites en fonction des informations de nombre d’éléments. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan) | Surchargé. Indique chaque élément d’une séquence observable dans des mémoires tampons consécutives qui ne se chevauchent pas, qui sont produites en fonction des informations de minutage. (Défini par Observable.) | |
Buffer<TResult>(Int32, Int32) | Surchargé. Indique chaque élément d’une séquence observable en zéro ou plusieurs mémoires tampons produites en fonction des informations relatives au nombre d’éléments. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan, IScheduler) | Surchargé. Indique chaque élément d’une séquence observable dans des mémoires tampons consécutives qui ne se chevauchent pas, qui sont produites en fonction des informations de minutage. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan, TimeSpan) | Surchargé. Indique chaque élément d’une séquence observable en zéro ou plusieurs mémoires tampons produites en fonction des informations de minutage. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan, Int32) | Surchargé. Indique chaque élément d’une séquence observable dans une mémoire tampon qui est envoyée lorsqu’elle est pleine ou qu’une durée donnée s’est écoulée. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan, TimeSpan, IScheduler) | Surchargé. Indique chaque élément d’une séquence observable en zéro ou plusieurs mémoires tampons produites en fonction des informations de minutage. (Défini par Observable.) | |
Buffer<TResult>(TimeSpan, Int32, IScheduler) | Surchargé. Indique chaque élément d’une séquence observable dans une mémoire tampon qui est envoyée lorsqu’elle est pleine ou qu’une durée donnée s’est écoulée. (Défini par Observable.) | |
Buffer<TResult, TBufferClosing>(Func<IObservable<TBufferClosing>>) | Surchargé. Indique chaque élément d’une séquence observable dans des mémoires tampons consécutives qui ne se chevauchent pas. (Défini par Observable.) | |
Buffer<TResult, TBufferOpening, TBufferClosing>(IObservable<TBufferOpening>, Func<TBufferOpening, IObservable<TBufferClosing>>) | Surchargé. Indique chaque élément d’une séquence observable interrogeable dans des mémoires tampons consécutives qui ne se chevauchent pas. (Défini par Observable.) | |
Catch<TResult>(IObservable<TResult>) | Surchargé. Continue une séquence observable qui se termine par une exception avec la séquence observable suivante. (Défini par Observable.) | |
Catch<TResult, TException>(Func<TException, IObservable<TResult>>) | Surchargé. Continue une séquence observable qui est terminée par une exception du type spécifié avec la séquence observable produite par le gestionnaire. (Défini par Observable.) | |
CombineLatest<TResult, TSecond, TResult> | Fusionne deux séquences observables en une seule séquence observable à l’aide de la fonction sélecteur chaque fois qu’une des séquences observables produit un élément. (Défini par Observable.) | |
Concat<TResult> | Concatène deux séquences observables. (Défini par Observable.) | |
Contient<TResult>(TResult) | Surchargé. Détermine si une séquence observable contient un élément spécifié à l’aide du comparateur d’égalité par défaut. (Défini par Observable.) | |
Contient<TResult>(TResult, IEqualityComparer<TResult>) | Surchargé. Détermine si une séquence observable contient un élément spécifié à l’aide d’un system.Collections.Generic.IEqualityComparer&spécifié ; T>. (Défini par Observable.) | |
Count<TResult> | Retourne une valeur Int32 qui représente le nombre total d’éléments dans une séquence observable. (Défini par Observable.) | |
DefaultIfEmpty<TResult>() | Surchargé. Retourne les éléments de la séquence spécifiée ou la valeur par défaut du paramètre de type dans une séquence singleton si la séquence est vide. (Défini par Observable.) | |
DefaultIfEmpty<TResult>(TResult) | Surchargé. Retourne les éléments de la séquence spécifiée ou la valeur par défaut du paramètre de type dans une séquence singleton si la séquence est vide. (Défini par Observable.) | |
Delay<TResult>(TimeSpan) | Surchargé. Indique la séquence observable par heure d’échéance avec la source et dueTime spécifiées. (Défini par Observable.) | |
Delay<TResult>(DateTimeOffset) | Surchargé. Indique la séquence observable par heure d’échéance avec la source et dueTime spécifiées. (Défini par Observable.) | |
Delay<TResult>(TimeSpan, IScheduler) | Surchargé. Indique la séquence observable par heure d’échéance avec la source, dueTime et le planificateur spécifiés. (Défini par Observable.) | |
Delay<TResult>(DateTimeOffset, IScheduler) | Surchargé. Indique la séquence observable par heure d’échéance avec la source, dueTime et le planificateur spécifiés. (Défini par Observable.) | |
Distinct<TResult>() | Surchargé. Retourne une séquence observable qui contient uniquement des éléments distincts avec une source spécifiée. (Défini par Observable.) | |
Distinct<TResult>(IEqualityComparer<TResult>) | Surchargé. Retourne une séquence observable qui contient uniquement des éléments distincts en fonction du comparateur. (Défini par Observable.) | |
Distinct<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Retourne une séquence observable qui contient uniquement des éléments distincts en fonction de la cléSelector. (Défini par Observable.) | |
Distinct<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Surchargé. Retourne une séquence observable qui contient uniquement des éléments distincts en fonction de la cléSelector. (Défini par Observable.) | |
DistinctUntilChanged<TResult>() | Surchargé. Retourne une séquence observable qui contient uniquement des éléments contigus distincts avec une source spécifiée. (Défini par Observable.) | |
DistinctUntilChanged<TResult>(IEqualityComparer<TResult>) | Surchargé. Retourne une séquence observable qui contient uniquement des éléments contigus distincts en fonction du comparateur. (Défini par Observable.) | |
DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Retourne une séquence observable qui contient uniquement des éléments contigus distincts en fonction de la keySelector. (Défini par Observable.) | |
DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Surchargé. Renvoie une séquence observable qui contient uniquement des éléments contigus distincts en fonction du keySelector et du comparateur. (Défini par Observable.) | |
Do<TResult>(Action<TResult>) | Surchargé. Appelle une action pour chaque élément de la séquence observable. (Défini par Observable.) | |
Do<TResult>(IObserver<TResult>) | Surchargé. Appelle une action pour chaque élément de la séquence observable et appelle une action en cas d’arrêt exceptionnel de la séquence observable. (Défini par Observable.) | |
Do<TResult>(Action<TResult>, Action) | Surchargé. Appelle une action pour chaque élément de la séquence observable et appelle une action lors de l’arrêt correct de la séquence observable. (Défini par Observable.) | |
Do<TResult>(Action<TResult>, Exception> d’action<) | Surchargé. Appelle une action pour chaque élément de la séquence observable et appelle une action en cas d’arrêt exceptionnel de la séquence observable. (Défini par Observable.) | |
Do<TResult>(Action<TResult>, Exception d’action<>, Action) | Surchargé. Appelle une action pour chaque élément de la séquence observable et appelle une action en cas d’arrêt correct ou exceptionnel de la séquence observable. (Défini par Observable.) | |
ElementAt<TResult> | Retourne l'élément à une position d'index spécifiée dans une séquence. (Défini par Observable.) | |
ÉlémentAtOrDefault<TResult> | Retourne l’élément situé à un index spécifié dans une séquence ou une valeur par défaut si l’index est hors limites. (Défini par Observable.) | |
Enfin<, résultats> | Appelle une action spécifiée une fois la séquence observable source terminée normalement ou par une exception. (Défini par Observable.) | |
First<TResult>() | Surchargé. Retourne le premier élément d’une séquence observable avec une source spécifiée. (Défini par Observable.) | |
First<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne le premier élément d’une séquence observable qui correspond au prédicat. (Défini par Observable.) | |
FirstOrDefault<TResult>() | Surchargé. Retourne le premier élément d’une séquence observable ou une valeur par défaut si aucune valeur n’est trouvée. (Défini par Observable.) | |
FirstOrDefault<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne le premier élément d’une séquence observable qui correspond au prédicat, ou une valeur par défaut si aucune valeur n’est trouvée. (Défini par Observable.) | |
Foo<TResult, R> | (Défini par MyExt.) | |
ForEach<TResult> | Appelle une action pour chaque élément de la séquence observable et bloque jusqu’à ce que la séquence soit terminée. (Défini par Observable.) | |
GetEnumerator<TResult> | Retourne un énumérateur qui énumère toutes les valeurs de la séquence observable. (Défini par Observable.) | |
GroupBy<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée. (Défini par Observable.) | |
GroupBy<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé et d’un comparateur spécifiés. (Défini par Observable.) | |
GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Surchargé. Regroupe les éléments d’une séquence observable et sélectionne les éléments résultants à l’aide d’une fonction spécifiée. (Défini par Observable.) | |
GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé et d’un comparateur spécifiés, puis sélectionne les éléments résultants à l’aide d’une fonction spécifiée. (Défini par Observable.) | |
GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable<TKey, TResult>, IObservable<TDuration>>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée. (Défini par Observable.) | |
GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable<TKey, TResult>, IObservable<TDuration>>, IEqualityComparer<TKey>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé et d’un comparateur spécifiés. (Défini par Observable.) | |
GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée et sélectionne les éléments résultants à l’aide d’une fonction spécifiée. (Défini par Observable.) | |
GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>, IEqualityComparer<TKey>) | Surchargé. Regroupe les éléments d’une séquence observable en fonction d’une fonction de sélecteur de clé et d’un comparateur spécifiés, puis sélectionne les éléments résultants à l’aide d’une fonction spécifiée. (Défini par Observable.) | |
GroupJoin<TResult, TRight, TLeftDuration, TRightDuration, TResult> | Met en corrélation les éléments de deux séquences en fonction des durées qui se chevauchent et regroupe les résultats. (Défini par Observable.) | |
IgnoreElements<TResult> | Ignore toutes les valeurs d’une séquence observable en ne laissant que les messages d’arrêt. (Défini par Observable.) | |
Join<TResult, TRight, TLeftDuration, TRightDuration, TResult> | Met en corrélation les éléments de deux séquences en fonction des durées qui se chevauchent. (Défini par Observable.) | |
Last<TResult>() | Surchargé. Retourne le dernier élément d’une séquence observable avec une source spécifiée. (Défini par Observable.) | |
Last<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne le dernier élément d’une séquence observable qui correspond au prédicat. (Défini par Observable.) | |
LastOrDefault<TResult>() | Surchargé. Retourne le dernier élément de la séquence observable ou une valeur par défaut si aucune valeur n’est trouvée. (Défini par Observable.) | |
LastOrDefault<TResult>(Func<TResult, Boolean>) | Surchargé. Renvoie le dernier élément d’une séquence observable qui correspond au prédicat, ou une valeur par défaut si aucune valeur n’est trouvée. (Défini par Observable.) | |
Dernier<résultat> | Échantillonne la valeur la plus récente dans une séquence observable. (Défini par Observable.) | |
Résultat du compte<long> | Retourne une valeur Int64 qui représente le nombre total d’éléments dans une séquence observable. (Défini par Observable.) | |
Matérialiser<les résultats> | Matérialise les notifications implicites d’une séquence observable en tant que valeurs de notification explicites. (Défini par Observable.) | |
Max<TResult>() | Surchargé. Retourne l’élément maximal dans une séquence observable. (Défini par Observable.) | |
Max<TResult>(IComparer<TResult>) | Surchargé. Retourne la valeur maximale dans une séquence observable en fonction du comparateur spécifié. (Défini par Observable.) | |
MaxBy<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Retourne les éléments d’une séquence observable avec la valeur de clé maximale. (Défini par Observable.) | |
MaxBy<TResult, TKey>(Func<TResult, TKey>, IComparer<TKey>) | Surchargé. Retourne les éléments d’une séquence observable avec la valeur de clé maximale. (Défini par Observable.) | |
Merge<TResult>(IObservable<TResult>) | Surchargé. Fusionne une séquence observable de séquences observables en une séquence observable. (Défini par Observable.) | |
Merge<TResult>(IObservable<TResult>, IScheduler) | Surchargé. Fusionne deux séquences observables en une seule séquence observable. (Défini par Observable.) | |
Min<TResult>() | Surchargé. Retourne l’élément minimal dans une séquence observable. (Défini par Observable.) | |
Min<TResult>(IComparer<TResult>) | Surchargé. Retourne la valeur minimale dans une séquence observable en fonction du comparateur spécifié. (Défini par Observable.) | |
MinBy<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Retourne les éléments d’une séquence observable avec la valeur de clé minimale. (Défini par Observable.) | |
MinBy<TResult, TKey>(Func<TResult, TKey>, IComparer<TKey>) | Surchargé. Retourne les éléments d’une séquence observable avec la valeur de clé minimale en fonction du comparateur spécifié. (Défini par Observable.) | |
MostRecent<TResult> | Échantillonne la valeur la plus récente dans une séquence observable. (Défini par Observable.) | |
Multicast<TResult, TResult>(ISubject<TResult, TResult>) | Surchargé. Retourne une séquence observable connectable qui, lors de la connexion, provoque l’envoi push des résultats de la séquence source dans le sujet spécifié. (Défini par Observable.) | |
Multicast<TResult, TIntermediate, TResult>(Func<ISubject<TResult, TIntermediate>>, Func<IObservable<TIntermediate>, IObservable<TResult>>) | Surchargé. Retourne une séquence observable qui contient les éléments d’une séquence produite en multidiffusion de la séquence source au sein d’une fonction de sélecteur. (Défini par Observable.) | |
Résultat suivant<> | Échantillonne la valeur suivante (blocage sans mise en mémoire tampon) à partir d’une séquence observable. (Défini par Observable.) | |
ObserveOn<TResult>(SynchronizationContext) | Surchargé. Notifier de manière asynchrone les observateurs sur le contexte de synchronisation spécifié. (Défini par Observable.) | |
ObserveOn<TResult>(Control) | Surchargé. (Défini par ControlObservable.) | |
ObserveOn<TResult>(Dispatcher) | Surchargé. (Défini par DispatcherObservable.) | |
ObserveOn<TResult>(DispatcherScheduler) | Surchargé. (Défini par DispatcherObservable.) | |
ObserveOn<TResult>(IScheduler) | Surchargé. Notifier de manière asynchrone les observateurs sur le planificateur spécifié. (Défini par Observable.) | |
ObserveOnDispatcher<TResult> | (Défini par DispatcherObservable.) | |
OnErrorResumeNext<TResult> | Continue une séquence observable qui se termine normalement ou par une exception avec la séquence observable suivante. (Défini par Observable.) | |
Publier<TResult>() | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente. (Défini par Observable.) | |
Publish<TResult>(TResult) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente et commence par initialValue. (Défini par Observable.) | |
Publish<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente. (Défini par Observable.) | |
Publish<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TResult) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente et commence par initialValue. (Défini par Observable.) | |
PublishLast<TResult>() | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente contenant uniquement la dernière notification. (Défini par Observable.) | |
PublishLast<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente contenant uniquement la dernière notification. (Défini par Observable.) | |
Répéter<TResult>() | Surchargé. Répète indéfiniment la séquence observable. (Défini par Observable.) | |
Repeat<TResult>(Int32) | Surchargé. Répète indéfiniment la séquence observable. (Défini par Observable.) | |
Relire<TResult>() | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications. (Défini par Observable.) | |
Replay<TResult>(TimeSpan) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult>(Int32) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique aux notifications tampon de relecture de séquence sous-jacenteSize. (Défini par Observable.) | |
Replay<TResult>(IScheduler) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications. (Défini par Observable.) | |
Replay<TResult>(TimeSpan, IScheduler) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult>(Int32, IScheduler) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique aux notifications tampon de relecture de séquence sous-jacenteSize. (Défini par Observable.) | |
Replay<TResult>(Int32, TimeSpan) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la mémoire tampon de relecture de séquence sous-jacenteSize des notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult>(Int32, TimeSpan, IScheduler) | Surchargé. Retourne une séquence observable connectable qui partage un abonnement unique à la mémoire tampon de relecture de séquence sous-jacenteSize des notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente et commence par la valeur initiale. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, IScheduler) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32) | Surchargé. Retourne une séquence observable résultant de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique aux notifications bufferSize de relecture de séquence sous-jacentes. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan, IScheduler) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique à la séquence sous-jacente relectant toutes les notifications dans la fenêtre. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, IScheduler) | Surchargé. Retourne une séquence observable résultant de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique aux notifications bufferSize de relecture de séquence sous-jacentes. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique aux notifications tampon de relecture de séquence sous-jacenteSize dans la fenêtre. (Défini par Observable.) | |
Replay<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan, IScheduler) | Surchargé. Retourne une séquence observable qui est le résultat de l’appel du sélecteur sur une séquence observable connectable qui partage un abonnement unique aux notifications bufferSize de la séquence sous-jacente dans la fenêtre. (Défini par Observable.) | |
Retry<TResult>() | Surchargé. Répète la séquence observable source jusqu’à ce qu’elle se termine correctement. (Défini par Observable.) | |
Retry<TResult>(Int32) | Surchargé. Répète la séquence observable source jusqu’à ce qu’elle se termine correctement. (Défini par Observable.) | |
Sample<TResult>(TimeSpan) | Surchargé. Échantillonne la séquence observable à chaque intervalle. (Défini par Observable.) | |
Sample<TResult>(TimeSpan, IScheduler) | Surchargé. Échantillonne la séquence observable à chaque intervalle avec la source, l’intervalle et le planificateur spécifiés. (Défini par Observable.) | |
Sample<TResult, TSample>(IObservable<TSample>) | Surchargé. Échantillonne la séquence observable aux cycles d’échantillonnage avec la source et l’échantillonneur spécifiés. (Défini par Observable.) | |
Scan<TResult>(Func<TResult, TResult, TResult>) | Surchargé. Applique une fonction d’accumulateur sur une séquence observable et retourne chaque résultat intermédiaire avec la source et l’accumulateur spécifiés. (Défini par Observable.) | |
Scan<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) | Surchargé. Applique une fonction d’accumulateur sur une séquence observable et retourne chaque résultat intermédiaire avec la source, la valeur initiale et l’accumulateur spécifiés. (Défini par Observable.) | |
Sélectionnez<TResult, TResult>(Func<TResult, TResult>) | Surchargé. Projette chaque élément d’une séquence observable dans un nouveau formulaire avec la source et le sélecteur spécifiés. (Défini par Observable.) | |
Sélectionnez<TResult, TResult>(Func<TResult, Int32, TResult>) | Surchargé. Projette chaque élément d’une séquence observable dans un nouveau formulaire en incorporant l’index de l’élément avec la source et le sélecteur spécifiés. (Défini par Observable.) | |
SelectMany<TResult, TOther>(IObservable<TOther>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SelectMany<TResult, TResult>(Func<TResult, IObservable<TResult>>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SelectMany<TResult, TResult>(Func<TResult, IEnumerable<TResult>>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SelectMany<TResult, TResult>(Func<TResult, IObservable<TResult>>, Func<Exception, IObservable<TResult>>, Func<IObservable<TResult>>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SelectMany<TResult, TCollection, TResult>(Func<TResult, IEnumerable<TCollection>>, Func<TResult, TCollection, TResult>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SelectMany<TResult, TCollection, TResult>(Func<TResult, IObservable<TCollection>>, Func<TResult, TCollection, TResult>) | Surchargé. Projette chaque élément d’une séquence observable dans une séquence observable et aplatit les séquences observables résultantes en une seule séquence observable. (Défini par Observable.) | |
SequenceEqual<TResult>(IObservable<TResult>) | Surchargé. Détermine si deux séquences sont égales en comparant les éléments par paire. (Défini par Observable.) | |
SequenceEqual<TResult>(IObservable<TResult>, IEqualityComparer<TResult>) | Surchargé. Détermine si deux séquences sont égales en comparant les éléments à l’aide d’un comparateur d’égalité spécifié. (Défini par Observable.) | |
Single<TResult>() | Surchargé. Retourne le seul élément d’une séquence observable et lève une exception s’il n’y a pas exactement un élément dans la séquence observable. (Défini par Observable.) | |
Single<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne le seul élément d’une séquence observable qui correspond au prédicat et lève une exception s’il n’y a pas exactement un élément dans la séquence observable. (Défini par Observable.) | |
SingleOrDefault<TResult>() | Surchargé. Retourne le seul élément d’une séquence observable, ou une valeur par défaut si la séquence observable est vide. (Défini par Observable.) | |
SingleOrDefault<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne le seul élément d’une séquence observable qui correspond au prédicat, ou une valeur par défaut si aucune valeur n’est trouvée. (Défini par Observable.) | |
Ignorer<TResult> | Contourne un nombre spécifié de valeurs dans une séquence observable, puis retourne les valeurs restantes. (Défini par Observable.) | |
SkipLast<TResult> | Contourne un nombre spécifié d’éléments à la fin d’une séquence observable. (Défini par Observable.) | |
SkipUntil<TResult, TOther> | Retourne les valeurs de la séquence observable source uniquement après que l’autre séquence observable a produit une valeur. (Défini par Observable.) | |
SkipWhile<TResult>(Func<TResult, Boolean>) | Surchargé. Contourne les valeurs d’une séquence observable tant qu’une condition spécifiée est vraie, puis retourne les valeurs restantes. (Défini par Observable.) | |
SkipWhile<TResult>(Func<TResult, Int32, Boolean>) | Surchargé. Contourne les valeurs d’une séquence observable tant qu’une condition spécifiée est vraie, puis retourne les valeurs restantes. (Défini par Observable.) | |
StartWith<TResult>TResult[]) | Surchargé. Ajoute une séquence de valeurs à une séquence observable avec la source et les valeurs spécifiées. (Défini par Observable.) | |
StartWith<TResult>(IScheduler, TResult[]) | Surchargé. Ajoute une séquence de valeurs à une séquence observable avec la source, le planificateur et les valeurs spécifiés. (Défini par Observable.) | |
S’abonner<à TResult>() | Surchargé. Évalue la séquence observable avec une source spécifiée. (Défini par ObservableExtensions.) | |
Subscribe<TResult>(Action<TResult>) | Surchargé. Abonne un gestionnaire d’éléments à une séquence observable. (Défini par ObservableExtensions.) | |
Subscribe<TResult>(Action<TResult>, Action<Exception>) | Surchargé. Abonne un gestionnaire d’éléments et un gestionnaire d’exceptions à une séquence observable. (Défini par ObservableExtensions.) | |
Subscribe<TResult>(Action<TResult>, Action) | Surchargé. Abonne un gestionnaire d’éléments et un gestionnaire d’achèvement à une séquence observable. (Défini par ObservableExtensions.) | |
Subscribe<TResult>(Action<TResult>, Action<Exception>, Action) | Surchargé. Abonne un gestionnaire d’éléments, un gestionnaire d’exceptions et un gestionnaire d’achèvement à une séquence observable. (Défini par ObservableExtensions.) | |
SubscribeOn<TResult>(SynchronizationContext) | Surchargé. S’abonne de façon asynchrone et désactive les observateurs sur le contexte de synchronisation spécifié. (Défini par Observable.) | |
SubscribeOn<TResult>(Control) | Surchargé. (Défini par ControlObservable.) | |
SubscribeOn<TResult>(Dispatcher) | Surchargé. (Défini par DispatcherObservable.) | |
SubscribeOn<TResult>(DispatcherScheduler) | Surchargé. (Défini par DispatcherObservable.) | |
SubscribeOn<TResult>(IScheduler) | Surchargé. S’abonne de façon asynchrone et désactive les observateurs sur le planificateur spécifié. (Défini par Observable.) | |
SubscribeOnDispatcher<TResult> | (Défini par DispatcherObservable.) | |
Synchroniser<TResult>() | Surchargé. Synchronise la séquence observable. (Défini par Observable.) | |
Synchronize<TResult>(Object) | Surchargé. Synchronise la séquence observable. (Défini par Observable.) | |
Take<TResult> | Retourne un nombre spécifié de valeurs contiguës à partir du début d’une séquence observable. (Défini par Observable.) | |
TakeLast<TResult> | Retourne un nombre spécifié d’éléments contigus à partir de la fin d’une séquence observable. (Défini par Observable.) | |
TakeUntil<TResult, TOther> | Retourne les valeurs de la séquence observable source jusqu’à ce que l’autre séquence observable produise une valeur. (Défini par Observable.) | |
TakeWhile<TResult>(Func<TResult, Boolean>) | Surchargé. Retourne des valeurs d’une séquence observable tant qu’une condition spécifiée est vraie, puis ignore les valeurs restantes. (Défini par Observable.) | |
TakeWhile<TResult>(Func<TResult, Int32, Boolean>) | Surchargé. Retourne des valeurs d’une séquence observable tant qu’une condition spécifiée est vraie, puis ignore les valeurs restantes. (Défini par Observable.) | |
Ensuite<, TResult, TResult> | Correspond lorsque la séquence observable a une valeur disponible et projette la valeur. (Défini par Observable.) | |
<Limitation des résultats>(TimeSpan) | Surchargé. Ignore les valeurs d’une séquence observable qui sont suivies d’une autre valeur avant l’échéance avec la source et dueTime spécifiées. (Défini par Observable.) | |
Throttle<TResult>(TimeSpan, IScheduler) | Surchargé. Ignore les valeurs d’une séquence observable qui sont suivies d’une autre valeur avant l’échéance avec la source, dueTime et le planificateur spécifiés. (Défini par Observable.) | |
TimeInterval<TResult>() | Surchargé. Enregistre l’intervalle de temps entre les valeurs consécutives dans une séquence observable avec la source spécifiée. (Défini par Observable.) | |
TimeInterval<TResult>(IScheduler) | Surchargé. Enregistre l’intervalle de temps entre les valeurs consécutives dans une séquence observable avec la source et le planificateur spécifiés. (Défini par Observable.) | |
Timeout<TResult>(TimeSpan) | Surchargé. Retourne la séquence observable ou une TimeoutException si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(DateTimeOffset) | Surchargé. Retourne la séquence observable ou une exception TimeoutException si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(TimeSpan, IObservable<TResult>) | Surchargé. Retourne la séquence observable source ou l’autre séquence observable si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(DateTimeOffset, IObservable<TResult>) | Surchargé. Retourne la séquence observable ou une TimeoutException si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(TimeSpan, IScheduler) | Surchargé. Retourne la séquence observable ou une TimeoutException si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(DateTimeOffset, IScheduler) | Surchargé. Retourne la séquence observable ou une TimeoutException si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(TimeSpan, IObservable<TResult>, IScheduler) | Surchargé. Retourne la séquence observable source ou l’autre séquence observable si dueTime s’écoule. (Défini par Observable.) | |
Timeout<TResult>(DateTimeOffset, IObservable<TResult>, IScheduler) | Surchargé. Retourne la séquence observable source ou l’autre séquence observable si dueTime s’écoule. (Défini par Observable.) | |
Timestamp<TResult>() | Surchargé. Enregistre l’horodatage de chaque valeur dans une séquence observable avec la source spécifiée. (Défini par Observable.) | |
Timestamp<TResult>(IScheduler) | Surchargé. Enregistre l’horodatage de chaque valeur dans une séquence observable avec la source et le planificateur spécifiés. (Défini par Observable.) | |
ToArray<TResult> | Crée un tableau à partir d’une séquence observable. (Défini par Observable.) | |
ToDictionary<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Crée un dictionnaire à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée. (Défini par Observable.) | |
ToDictionary<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Surchargé. Crée un dictionnaire à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée et d’un comparateur. (Défini par Observable.) | |
ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Surchargé. Crée un dictionnaire à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée et d’une fonction de sélecteur d’élément. (Défini par Observable.) | |
ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Surchargé. Crée un dictionnaire à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée, d’un comparateur et d’une fonction de sélecteur d’élément spécifiée. (Défini par Observable.) | |
ToEnumerable<TResult> | Convertit une séquence observable en séquence énumérable. (Défini par Observable.) | |
ToEvent<TResult> | Expose une séquence observable en tant qu’objet avec un événement .NET avec une source spécifiée. (Défini par Observable.) | |
ToList<TResult> | Crée une liste à partir d’une séquence observable. (Défini par Observable.) | |
ToLookup<TResult, TKey>(Func<TResult, TKey>) | Surchargé. Crée une recherche à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée. (Défini par Observable.) | |
ToLookup<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Surchargé. Crée une recherche à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée et d’un comparateur. (Défini par Observable.) | |
ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Surchargé. Crée une recherche à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée et d’une fonction de sélecteur d’élément. (Défini par Observable.) | |
ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Surchargé. Crée une recherche à partir d’une séquence observable en fonction d’une fonction de sélecteur de clé spécifiée, d’un comparateur et d’une fonction de sélecteur d’élément. (Défini par Observable.) | |
ToNotifier<TSource> | Crée un rappel de notification à partir d’un observateur. (Défini par l’observateur.) | |
ToTask<TResult>() | Surchargé. Retourne une tâche qui contient la dernière valeur de la séquence observable. (Défini par TaskObservableExtensions.) | |
ToTask<TResult>(Object) | Surchargé. Retourne une tâche qui contient la dernière valeur de la séquence observable. (Défini par TaskObservableExtensions.) | |
ToTask<TResult>(CancellationToken) | Surchargé. Retourne une tâche qui contient la dernière valeur de la séquence observable. (Défini par TaskObservableExtensions.) | |
ToTask<TResult>(CancellationToken, Object) | Surchargé. Retourne une tâche qui contient la dernière valeur de la séquence observable. (Défini par TaskObservableExtensions.) | |
Where<TResult>(Func<TResult, Boolean>) | Surchargé. Filtre les éléments d’une séquence observable en fonction d’un prédicat. (Défini par Observable.) | |
Where<TResult>(Func<TResult, Int32, Boolean>) | Surchargé. Filtre les éléments d’une séquence observable en fonction d’un prédicat en incorporant l’index de l’élément. (Défini par Observable.) | |
Window<TResult>(Int32) | Surchargé. Projette chaque élément d’une séquence observable dans des fenêtres consécutives qui ne se chevauchent pas, qui sont produites en fonction des informations de nombre d’éléments. (Défini par Observable.) | |
Window<TResult>(TimeSpan) | Surchargé. Projette chaque élément d’une séquence observable dans des fenêtres consécutives qui ne se chevauchent pas, qui sont produites en fonction des informations de minutage. (Défini par Observable.) | |
Window<TResult>(Int32, Int32) | Surchargé. Projette chaque élément d’une séquence observable en une ou plusieurs fenêtres produites en fonction des informations de nombre d’éléments. (Défini par Observable.) | |
Window<TResult>(TimeSpan, IScheduler) | Surchargé. Projette chaque élément d’une séquence observable dans des fenêtres consécutives qui ne se chevauchent pas, qui sont produites en fonction des informations de minutage. (Défini par Observable.) | |
Window<TResult>(TimeSpan, TimeSpan) | Surchargé. Projette chaque élément d’une séquence observable dans zéro ou plusieurs fenêtres produites en fonction des informations de minutage. (Défini par Observable.) | |
Window<TResult>(TimeSpan, Int32) | Surchargé. Projette chaque élément d’une séquence observable dans une fenêtre qui est terminée lorsqu’elle est pleine ou qu’un laps de temps donné s’est écoulé. (Défini par Observable.) | |
Window<TResult>(TimeSpan, TimeSpan, IScheduler) | Surchargé. Projette chaque élément d’une séquence observable dans zéro ou plusieurs fenêtres produites en fonction des informations de minutage. (Défini par Observable.) | |
Window<TResult>(TimeSpan, Int32, IScheduler) | Surchargé. Projette chaque élément d’une séquence observable dans une fenêtre qui est terminée lorsqu’elle est pleine ou qu’un laps de temps donné s’est écoulé. (Défini par Observable.) | |
Window<TResult, TWindowClosing>(Func<IObservable<TWindowClosing>>) | Surchargé. Projette chaque élément d’une séquence observable dans des fenêtres consécutives qui ne se chevauchent pas. (Défini par Observable.) | |
Window<TResult, TWindowOpening, TWindowClosing>(IObservable<TWindowOpening>, Func<TWindowOpening, IObservable<TWindowClosing>>) | Surchargé. Projette chaque élément d’une séquence observable dans zéro ou plusieurs fenêtres. (Défini par Observable.) | |
Zip<TResult, TSecond, TResult>(IObservable<TSecond>, Func<TResult, TSecond, TResult>) | Surchargé. Fusionne deux séquences observables en une seule séquence observable en combinant leurs éléments de manière paire. (Défini par Observable.) | |
Zip<TResult, TSecond, TResult>(IEnumerable<TSecond>, Func<TResult, TSecond, TResult>) | Surchargé. Fusionne une séquence observable et une séquence énumérable en une séquence observable à l’aide de la fonction sélecteur. (Défini par Observable.) |
Haut
Notes
Cette interface objet offre à un sujet la possibilité d’observer une séquence observable d’un type lors de la publication d’une séquence observable d’un autre type.
Exemples
Cet exemple illustre l’implémentation d’un TSource ISubject<, TResult> qui observe une séquence observable d’un type lors de la publication d’une séquence observable d’un autre type. AsciiConverterSubject dans cet exemple illustre l’implémentation en observant des séquences de type char et en publiant une séquence observable de int. La séquence observable publiée de int est le code ASCII pour chaque valeur char qu’il observe.
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);
}
}
}
}
La sortie suivante a été générée par l’exemple de code.
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.