C# 如何使用Throttle筛选事件

C# 如何使用Throttle筛选事件,c#,.net,system.reactive,reactive-programming,C#,.net,System.reactive,Reactive Programming,我正在尝试一种双赢的被动框架 IObservable<IEvent<MouseEventArgs>> mouseMoves = Observable.FromEvent<MouseEventArgs>(this, "MouseMove"); IObservable<IEvent<MouseEventArgs>> mouseDowns = Observable.FromEvent<MouseEventArgs>(this, "

我正在尝试一种双赢的被动框架

IObservable<IEvent<MouseEventArgs>> mouseMoves = Observable.FromEvent<MouseEventArgs>(this, "MouseMove");
IObservable<IEvent<MouseEventArgs>> mouseDowns = Observable.FromEvent<MouseEventArgs>(this, "MouseDown");
IObservable<IEvent<MouseEventArgs>> mouseUps = Observable.FromEvent<MouseEventArgs>(this, "MouseUp");
var pointChanges = mouseMoves.Zip(mouseMoves.Skip(1), (prev, post) => new { Prev = prev, Post = post });
var mouseDrags = from d in mouseDowns
                 from p in pointChanges.TakeUntil(mouseUps)
                 select p;
IObservable mouseMoves=Observable.FromEvent(此为“MouseMove”);
IObservable mouseDowns=可观察的.FromEvent(此为“MouseDown”);
IObservable MouseUp=可观察的.FromEvent(此为“MouseUp”);
var pointChanges=mouseMoves.Zip(mouseMoves.Skip(1),(prev,post)=>new{prev=prev,post=post});
var mouseDrags=从mouseDowns中的d开始
在pointChanges.TakeUntil中从p开始(mouseUps)
选择p;

我想过滤鼠标标签,只需要在鼠标下降后超过1秒的鼠标标签。怎么样?

看起来不错。如果明天成功的话,我会尽力接受答案。谢谢
from d in mouseDowns.Timestamp()
from p in pointChanges
    .TakeUntil(mouseUps)
    .SkipUntil(Observable.Timer(d.Timestamp + TimeSpan.FromSeconds(1.0)))
select p;