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

时间:2016-09-19 23:22:44

标签: c# .net system.reactive reactive-programming 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;
    }
)

1 个答案:

答案 0 :(得分:7)

这真的很简单。就这样做:

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

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