Réponse courte:
IConnectableObservable
représente une attente chaud observable qui peut être partagée avec plusieurs abonnés. Appelant IConnectableObservable.Connect()
provoque le changement à chaud (s'abonne à la source froide observables)
Réponse longue:
Un froid observables (comme Observable.Range
) replays de la séquence pour chaque abonné. C'est comme pour un chronomètre, où chaque abonné est donnée à leur propre chronomètre. L'abonné démarre le chronomètre en vous abonnant, et le chronomètre s'arrête (et réinitialise) une fois que l'observateur s'arrête à l'observation.
Une chaude observables actions de la séquence entre tous les abonnés. C'est comme de l'existence d'un chronomètre et de tous les abonnés reçoivent la même lecture du temps, indépendamment du moment où ils ont commencé à observer.
IObservable.Publish
convertit un froid observables dans une chaude observables, mais retourne une IConnectableObservable
. Cela permet à l'abonné de souscrire à la (seule) chronomètre avant qu'il ne commence. Appelant IConnectableObservable.Connect()
démarre le chronomètre. L'élimination de l' Connect()
de la valeur de retour arrête le chronomètre.
Il est intéressant de noter que certains observables sources sont chaud par nature. Par exemple, les événements de souris peuvent incendie, indépendamment de savoir si nous sommes abonnés à eux. Tout un connectable observables ferait dans ce scénario est d'une part un seul cas d'abonnement.