gpt4 book ai didi

c# - 生成具有动态可变时间间隔的事件

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:42 25 4
gpt4 key购买 nike

我有一个以快速(亚毫秒)到达的数值流,我想在屏幕上显示它们的“即时值”,出于可用性原因,我应该对该流进行下采样,更新最后一个值使用可配置时间间隔。该配置将根据用户偏好通过拖动 slider 来完成。

所以我想做的是将源流的最后一个值存储在一个变量中,并有一个自动重新触发计时器,用该变量的值更新显示的值。

我考虑使用 RX,像这样:

Observable.FromEventPattern<double>(_source, "NewValue")
.Sample(TimeSpan.FromMilliseconds(100))
.Subscribe(ep => instantVariable = ep.EventArgs)

问题是,据我所知,我无法动态更改间隔。

我可以想象有一些方法可以使用定时器来完成,但我更愿意使用 RX。

最佳答案

假设您可以将样本量变化建模为一个可观察对象,您可以这样做:

IObservable<int> sampleSizeObservable;

var result = sampleSizeObservable
.Select(i => Observable.FromEventPattern<double>(_source, "NewValue")
.Sample(TimeSpan.FromMilliseconds(i))
)
.Switch();

Switch 基本上做你想做的,但通过 Rx。它不会“改变”间隔:Observables(通常)应该是不可变的。相反,只要样本大小发生变化,它就会创建一个新的采样可观察对象,订阅新的可观察对象,放弃对旧的订阅,然后将这两个订阅融合在一起,这样对于客户端订阅者来说它看起来是无缝的。

关于c# - 生成具有动态可变时间间隔的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com