Kurze Antwort:
IConnectableObservable
stellt ein anhängigen heiß beobachtbar, die mit mehreren Teilnehmern gemeinsam genutzt werden können. Der Aufruf IConnectableObservable.Connect()
bewirkt, dass der Wechsel zu heiß (abonniert zur kalten Quelle beobachtbaren)
Lange Antwort:
A kalt beobachtbaren (wie Observable.Range
) Replays die Sequenz für jeden Teilnehmer. Es ist vergleichbar mit einer Stoppuhr, bei der jeder Teilnehmer seine eigene Stoppuhr hat. Der Teilnehmer startet die Stoppuhr durch Abonnieren, und die Stoppuhr stoppt (und setzt zurück), sobald der Beobachter aufhört zu beobachten.
Ein heiß beobachtbar teilt die Sequenz zwischen allen Abonnenten. Es ist analog zu einer Stoppuhr und alle Abonnenten erhalten die gleiche Zeitanzeige, unabhängig davon, wann sie anfingen zu schauen.
IObservable.Publish
wandelt ein kalt beobachtbares in ein heißes beobachtbares um, gibt aber ein IConnectableObservable
zurück. Dies ermöglicht Abonnenten, die (einzelne) Stoppuhr vor dem Start zu abonnieren. Durch Aufruf von IConnectableObservable.Connect()
wird die Stoppuhr gestartet. Wenn Sie den Rückgabewert Connect()
freigeben, wird die Stoppuhr angehalten.
Es ist erwähnenswert, dass einige beobachtbare Quellen von Natur aus heiß sind. Beispielsweise können Mausereignisse ausgelöst werden, unabhängig davon, ob wir sie abonniert haben oder nicht. Alles, was eine verbindbare Observable in diesem Szenario tun würde, ist ein einzelnes Ereignis-Abonnement zu teilen.