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;