如何在一段时间后处理一个观察者?

Arm*_*in 5 .net c# reactive-programming system.reactive observable

我有一个可观察的是每隔2秒以固定的速率向一些观察者发送数据.我想要一种方法,在经过2分钟后,发送数据的观察者在告知主题完成后将自行处理.我使用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;
    }
)
Run Code Online (Sandbox Code Playgroud)

Eni*_*ity 8

这真的很简单.这样做:

Observable
    .Interval(TimeSpan.FromSeconds(2.0))
    .TakeUntil(Observable.Timer(TimeSpan.FromMinutes(2.0)))
    .Subscribe(x =>
    {
    });
Run Code Online (Sandbox Code Playgroud)

这将在2分钟后自动结束观察,并为您完成所有取消订阅.