限制事件队列的最佳做法

时间:2011-09-28 19:05:51

标签: c# wpf events event-handling limit

我正在寻找有关应用程序的特定用例的建议和帮助。 这是用例:

用户我们的WPF应用程序发疯并开始全部点击,在第一个(或上一个)事件必须完成之前触发一些事件。

目前,WPF对任何和所有点击进行排队,并将它们排队以便顺序执行。理想情况下,我们希望在前3个事件之后排队最多3个事件并放弃并忽略任何和所有点击(用户交互)。

解决此问题的最佳方法是什么,此用例的最佳做法是什么。任何文档,代码和/或帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

由于这确实是一个Windows问题,而不是特别是WPF问题,我唯一能想到的是挂钩消息队列并在一定时间内丢弃点击,除非你在每个控件中编写特定的处理程序。另一种选择是编写应用程序,以便在操作期间向用户提供反馈并禁用输入。

What does WPF use to capture mouse and keyboard input?

答案 1 :(得分:0)

如果您使用MVVM,则所有UI操作都绑定到ViewModel命令或属性。在ViewModel中,您可以完全控制要处理来自UI的内容的频率和频率。它可能涉及某种生产者消费者队列。

此外,如果用户操作阻止了UI,则需要尽可能在UI线程外处理它们。