C# 我如何创建一个Rx可观测对象,它获得一个立即值,然后进行采样?
我想使用Sample来减少我的可观察项目出现的频率,但我想立即看到第一个事件通过,而不会在样本持续时间内延迟。之后,我希望样本只给我一个关于样本间隔的项目 我为这个简单示例编写的代码是:C# 我如何创建一个Rx可观测对象,它获得一个立即值,然后进行采样?,c#,.net,system.reactive,observable,C#,.net,System.reactive,Observable,我想使用Sample来减少我的可观察项目出现的频率,但我想立即看到第一个事件通过,而不会在样本持续时间内延迟。之后,我希望样本只给我一个关于样本间隔的项目 我为这个简单示例编写的代码是: var sampler = Observable .Interval(TimeSpan.FromSeconds(2)) .Select(_ => Unit.Default); var seq = Observable.FromEventPattern<IntEven
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);
var采样器=可观察
.间隔(时间跨度从秒(2))
.Select(=>Unit.Default);
var seq=Observable.FromEventPattern(h=>\u eventSource.Occessed+=h,h=>\u eventSource.Occessed-=h)
.样品(取样器);
所以我试着用这个让它立即产生一个项目,但是这会完全停止可观察的工作:
var seq = Observable.FromEventPattern<IntEventArgs>(h => _eventSource.Happened += h, h => _eventSource.Happened -= h)
.Sample(Observable.Return(Unit.Default).Concat(sampler));
var seq=Observable.FromEventPattern(h=>\u eventSource.Occessed+=h,h=>\u eventSource.Occessed-=h)
.Sample(可观察的返回(单位默认值).Concat(取样器));
然后我想问题可能出在单元上。采样器的默认部分,所以我尝试摆脱它,但现在出现了编译器错误:
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);
var采样器=可观察
.间隔(时间跨度从秒(2));
var seq=Observable.FromEventPattern(h=>\u eventSource.Occessed+=h,h=>\u eventSource.Occessed-=h)
.可观察。返回(单位默认值)。Concat(取样器);
我试着在谷歌上搜索“c#立即可观察样本”之类的东西,但什么都没有显示,我想我使用了错误的术语,但不确定我需要什么
有什么想法吗?这对你有用吗
var observable = Observable.Merge<IntEventArgs>(h => _eventSource.Happened += h,
h => _eventSource.Happened -= h)
.Publish()
.RefCount();
var seq = Observable.Merge<IntEventArgs>(observable.FirstAsync(),
observable.Skip(1).Sample(sampler));
var observable=observable.Merge(h=>\u eventSource.occurrent+=h,
h=>\u eventSource.coursed-=h)
.Publish()
.RefCount();
var seq=Observable.Merge(Observable.FirstAsync(),
可观察。跳过(1)样品(取样器);
Publish()方法确保只向事件注册一次 你的代码在第三个
seq
declaration-.Observable.Return(Unit.Default).Concat(sampler)末尾代码>-没有意义。你能修好吗?的确,这就是编译器不喜欢它的原因。如果我能修复它,那么我可以回答这个问题:-/这不是一种有效的c#语法错误,但不会编译。这是无效的c#语法-你肯定可以修复它吗?啊,我没有看到尾随;。这不是问题所在-它不喜欢.Observable.Return