【发布时间】:2015-06-12 08:56:38
【问题描述】:
我想使用 Sample 来减少从我的 observable 中出现的项目的频率,但我想立即看到第一个事件通过而不会在示例持续时间内被阻止。之后,我希望 Sample 只在采样间隔上给我一个项目。
简单示例的代码是:
var sampler = Observable
.Interval(TimeSpan.FromSeconds(2))
.Select(_ => Unit.Default);
var seq = Observable.FromEventPattern<IntEventArgs>(h => _eventSource.Happened += h, h => _eventSource.Happened -= h)
.Sample(sampler);
所以我尝试使用它使其立即生成一个项目,但这完全停止了 observable 的工作:
var seq = Observable.FromEventPattern<IntEventArgs>(h => _eventSource.Happened += h, h => _eventSource.Happened -= h)
.Sample(Observable.Return(Unit.Default).Concat(sampler));
然后我认为问题可能出在采样器的 Unit.Default 部分,所以我尝试摆脱它,但现在出现编译器错误:
var sampler = Observable
.Interval(TimeSpan.FromSeconds(2));
var seq = Observable.FromEventPattern<IntEventArgs>(h => _eventSource.Happened += h, h => _eventSource.Happened -= h)
.Observable.Return(Unit.Default).Concat(sampler);
我尝试在谷歌上搜索“c# 即时可观察样本”之类的内容,但没有显示任何内容,我想我使用了错误的术语,但不确定我需要什么...
有什么想法吗?
【问题讨论】:
-
第三个
seq声明末尾的代码 -.Observable.Return(Unit.Default).Concat(sampler);- 没有意义。你能解决吗? -
确实,这就是编译器不喜欢它的原因。如果我能解决它,那么我可以回答这个问题:-/
-
这种错误不是有效的 c# 语法,但无法编译。这是无效的 c# 语法 - 你肯定能解决这个问题吗?
-
啊我没看到结尾的;。这不是问题 - 它不喜欢 .Observable.Return
标签: c# .net system.reactive observable