我有一个可观察的是每隔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;
}
)
答案 0 :(得分:7)
这真的很简单。就这样做:
Observable
.Interval(TimeSpan.FromSeconds(2.0))
.TakeUntil(Observable.Timer(TimeSpan.FromMinutes(2.0)))
.Subscribe(x =>
{
});
这将在2分钟后自动结束观察,并为您完成所有取消订阅。