Reaktiv: Versucht zu verstehen, wie Subjekt <T> funktioniert

Ich versuche zu verstehen, wie das gehtSubject<T>, ReplaySubject<T> und andere Arbeiten. Hier ist ein Beispiel:

(Betreff ist beobachtbarund Beobachter)

public IObservable<int> CreateObservable()
{
     Subject<int> subj = new Subject<int>();                // case 1
     ReplaySubject<int> subj = new ReplaySubject<int>();    // case 2

     Random rnd = new Random();
     int maxValue = rnd.Next(20);
     Trace.TraceInformation("Max value is: " + maxValue.ToString());

     subj.OnNext(-1);           // specific value

     for(int iCounter = 0; iCounter < maxValue; iCounter++)
     {
          Trace.TraceInformation("Value: " + iCounter.ToString() + " is about to publish");
          subj.OnNext(iCounter);
      }

      Trace.TraceInformation("Publish complete");
      subj.OnComplete();

      return subj;
 }

 public void Main()
 {
     //
     // First subscription
     CreateObservable()
         .Subscribe(
               onNext: (x)=>{  
                  Trace.TraceInformation("X is: " + x.ToString()); 
      });

     //
     // Second subscribe
     CreateObservable()
         .Subscribe(
               onNext: (x2)=>{  
                  Trace.TraceInformation("X2 is: " + x.ToString());
     });

Fall 1: Die seltsame Situation ist - wenn ich es benutzeSubject<T> Es wird kein Abonnement abgeschlossen (???) - Ich sehe nie den Text "X is:" - Ich sehe nur "Value is:" und "Max value is" ... WarumSubject<T> Push-Werte nicht zum Abonnement?

Fall 2: Wenn ich benutzeReplaySubject<T> - Ich sehe die Werte im Abonnement, konnte mich aber nicht bewerbenDefer Option auf alles. Nicht zuSubject und nicht zu beobachten .... Also jedes Abo bekommt da andere WerteCreateObservable Funktion istkalt beobachtbar. Wo istDefer ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage