订阅多个可观察对象的观察者没有完成



我正在尝试了解RX,并订阅一个创建的观察者到两个不同的可观察对象。

var observer = Observer.Create<string>(x => Console.WriteLine(x), 
            () => Console.WriteLine("Completed"));
var subscription1 = Observable.Interval(TimeSpan.FromSeconds(1))
            .Select(x => "X" + x)
            .Subscribe(observer);
var subscription2 = Observable.Interval(TimeSpan.FromSeconds(2))
           .Select(x => "YY" + x)
           .Subscribe(observer);
Console.WriteLine("Unsubscribing in 5 seconds");
Thread.Sleep(5000);
subscription1.Dispose();
subscription2.Dispose();
Console.WriteLine("All disposed");

我希望在处理完subscrition1之后,观察者将被完成。我遗漏了什么?目前,我从上面的代码中得到以下控制台输出:

Unsubscribing in 5 seconds
X0
YY0
X1
X2
YY1
X3
All disposed

Observable.Interval创建一个无限序列,因此您永远不会得到'完成'消息。通过取消订阅,你可以停止收听这个无限序列。

如果你想完成序列,你可以使用Observable.Interval(...).Take(3)

相关内容

  • 没有找到相关文章

最新更新