【发布时间】:2015-03-17 00:54:08
【问题描述】:
在我的 WPF 应用程序中,我有一个事件处理程序,它在我的 UI 元素的 MouseEnter 事件上被调用:
myUiElement.MouseEnter += myEventHandler
我想限制 myEventHandler 使其每秒不会被多次调用。我怎样才能做到这一点? Rx 是最好的方法吗?我正在使用 .NET 4.0,如果它有所作为的话。
另外,我需要确保 MouseLeave 事件总是在下一个 MouseEnter 事件之前被调用;我需要自己管理吗?或者框架是否已经设计为总是在下一个 MouseEnter 事件之前调用 MouseLeave 事件?如果我在这些事件处理程序中有异步代码怎么办?
【问题讨论】:
-
您是否需要它实际上根本不被调用,或者如果最后一次调用太接近当前时间,您是否可以在您的方法中立即返回?
-
我想限制它,这样它就不会给线程带来太多负担,以防用户在所有东西上乱扔鼠标(我有许多 UI 元素将具有相同的事件处理程序);但我想我可以做到这一点,如果它比实际限制它更有效..
-
任何限制机制最终都将涉及 if 语句和继续执行或中止的选择。你无法真正解决这个问题。
-
我想 - 我想我会接受你的建议,因为它真的很简单。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# wpf throttling