Rx.NET Throttle操作符未按预期等待无活动时长,而是立即触发的问题求助
Rx.NET Throttle操作符未按预期等待无活动时长,而是立即触发的问题求助
我现在在用Rx.NET(Reactive Extensions)来检测文件处理事件流里的无活动状态,本来想实现「15秒没有新事件进来就关闭文件」的逻辑,但Throttle操作符的表现完全不对劲——它居然会立刻触发后续的关闭操作,根本不等到15秒的静默期,这可把我搞懵了。
贴一下我当前的代码片段:
return _fileProcessedObservable .Do(_ => Logging.Logger.Info($"[Throttle Test] Triggering SetLive at {DateTime.Now}")) .Do(SetLive) // 这里是收到事件后立即更新在线状态,这部分没问题 .Throttle(TimeSpan.FromSeconds(15)) // 预期是等15秒无新事件再走后面的逻辑,但现在一订阅就触发 .Do(_ => Logging.Logger.Info($"[Throttle Test] Triggering CloseFile at {DateTime.Now}")) .Do(CloseFile) .Subscribe();
我已经确认了事件流本身是正常的,平时会有持续的事件进来,但只要一完成订阅,Throttle后面的CloseFile就马上执行了,完全没等那15秒的静默时间。
有没有大佬碰到过类似的问题?是不是我对Throttle的用法理解有偏差?或者是不是线程调度上下文的问题导致的?比如有没有可能我没指定正确的Scheduler?
内容来源于stack exchange
相关产品推荐
相关产品推荐

