2

除了使用某种计时器滚动我自己的方法之外,还有更好更通用的方法来限制您收到鼠标移动消息的频率吗?

我正在对鼠标移动消息进行一些非常密集的处理,并希望将频率限制为每秒 30 次更新。目前看来,我每秒可以接收数百个。

4

2 回答 2

2

好吧,这来晚了,但我通过检查秒表的经过时间解决了类似的问题,并且只在每个特定数量的滴答声中调用我的内部函数。间隔或多或少是凭经验定义的,但也许可以改进这种方法以获得更精确的毫秒结果。在我的情况下,解决方案就像一个魅力。

    public static Stopwatch stopwatch = new Stopwatch();

    public static void OnMouseMove(object sender, RoutedEventArgs e)
    {
            if (stopwatch.ElapsedTicks % 10L == 0L)
            {
                // do the heavy work here....
            }
        }
    }

当然,您必须在某个地方启动秒表...

于 2013-08-08T23:49:36.480 回答
2

据我了解,每次鼠标移动时都会触发 MouseMove 事件;即每次更改指针的 x,y 坐标时。因此,我不相信有办法限制事件触发的消息/秒,因为这只是由您移动鼠标的频率决定的。我的建议是,如果您只希望在某些时候触发 move 事件,您可以在这些时候添加和删除您的事件处理程序。非常欢迎您继续寻找实现所需功能的方法,如果您这样做,我会非常有兴趣看到它。 是有关 MouseMove 事件的 MSDN 文章,这可能是开始查找的好地方。祝你好运!

于 2012-12-19T20:08:54.207 回答