油门也会延迟第一次采样

时间:2011-10-16 07:20:14

标签: c# system.reactive

我正试图驯服一个键盘触发的事件,没有节流会以非常高的频率发射。下面的代码可以工作,但它也会延迟第一次调用GlobalCopy的时间限制。有没有办法毫不拖延地获得第一个样本?

observableGlobalCopy = Observable
  .FromEventPattern<EventHandler, EventArgs>(h => this.GlobalCopy += h, h => this.GlobalCopy -= h);

observableGlobalCopy
    .SubscribeOnDispatcher()
    .Throttle(GlobalEventThottle)
    .Subscribe(x => GlobalCopyHandler());

2 个答案:

答案 0 :(得分:5)

您可以尝试这样的事情:

var observableGlobalCopy2 = observableGlobalCopy
    .Window(() => Observable.Timer(TimeSpan.FromSeconds(1.0)))
    .Select(_ => _.Take(1))
    .Merge();

答案 1 :(得分:0)

如果我理解你的要求,那怎么样?

observableGlobalCopy.Take(1)
    .Concat(
        observableGlobalCopy.Throttle(GlobalEventThottle))
    .SubscribeOnDispatcher()
    .Subscribe(x => GlobalCopyHandler());