如何在设定时间后处理可观察对象?

How can I dispose of an observable after a set time?

我有一个 Observable,它每 2 秒以固定速率向某个观察者发送数据。我想要一种方法,在 2 分钟过去后,发送数据的 Observable 将在告诉主题它已完成后自行处理。我使用了 2 个定时器,一个用于 2 秒间隔发射数据,另一个用于总 2 分钟持续时间,因此它可以发送 OnComplete。我想知道是否有办法在使用计时器完成 2 分钟后也自行处理?

我的代码看起来像这样:

Observable.Create<>(
    observer =>
    {
        var timer = new Timer();
        timer.Elapsed += (s, e) => observer.OnNext( *send some string* );
        timer.start();
        return Disposable.Empty;
    }
)

真的很简单。只需这样做:

Observable
    .Interval(TimeSpan.FromSeconds(2.0))
    .TakeUntil(Observable.Timer(TimeSpan.FromMinutes(2.0)))
    .Subscribe(x =>
    {
    });

这将在 2 分钟后自动结束 observable 并为您完成所有退订。