1

我试图了解如何使用响应式扩展来实现以下场景。我一直在研究的其他解决方案涉及管理一系列计时器……如果可能的话,我希望避免这种情况。

场景
发生“ActionRequests”流。ActionRequest 的流入来自不同的对象源。一旦请求停止从特定来源传入 x 秒,我只对挑选最新的 ActionRequest 感兴趣

所以打破它。

  • 不断地从不同的对象源接收事件。
  • 不同的对象源由 guid 表示 - 请参阅 ActionRequests 类
  • 在对象源沉默 x 秒后,最新事件被推出。
  • 接收到最近的感兴趣的 ActionRequest 后,可以丢弃较旧的消息

    public class ActionRequest
    {
        public ActionRequest(Guid quoteId, DateTime now)
        {
            QuoteId = quoteId;
            RequestTimestamp = now;
        }
    
        public Guid QuoteId { get; set; }
        public DateTime RequestTimestamp { get; set; }
    
    }
    

    对此的任何想法将不胜感激。

  • 4

    1 回答 1

    1

    Richard Hein 在RX 论坛中提供了答案。

    答案的简短版本如下。RX 论坛中的线程中添加了更完整的示例。

    var throttled = observable.GroupBy(tar => tar.Value.QuoteId).SelectMany(g => g.Throttle(TimeSpan.FromMilliseconds(1500)));
    
    于 2010-08-17T11:07:44.283 回答