C# 限制事件队列的最佳实践

C# 限制事件队列的最佳实践,c#,wpf,events,event-handling,limit,C#,Wpf,Events,Event Handling,Limit,我正在寻找有关应用程序特定用例的建议和帮助。 以下是用例: 我们的WPF应用程序的一个用户发疯了,开始到处点击,在第一个(或前一个)事件必须完成之前触发了许多事件 目前,WPF将任何和所有单击排队,并将它们排队以便顺序执行。理想情况下,我们希望排队最多3个事件,并在前3个事件之后放弃并忽略任何和所有单击(用户交互) 解决这个问题的最佳方法是什么,这个用例的最佳实践是什么。任何文档、代码和/或帮助都将不胜感激。因为这确实是windows问题,而不是WPF问题,所以我唯一能想到的就是挂接消息队列并在

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

我们的WPF应用程序的一个用户发疯了,开始到处点击,在第一个(或前一个)事件必须完成之前触发了许多事件

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


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

因为这确实是windows问题,而不是WPF问题,所以我唯一能想到的就是挂接消息队列并在一定时间内放弃单击,除非您在每个控件中写入特定的处理程序。另一个选项是编写应用程序,以便在操作期间向用户提供反馈,并禁用输入


由于这实际上是windows问题,而不是WPF问题,因此我唯一能想到的就是挂接消息队列并在特定时间内放弃单击,除非您将特定的处理程序写入每个控件。另一个选项是编写应用程序,以便在操作期间向用户提供反馈,并禁用输入


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


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

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


此外,如果您的用户操作阻塞了UI,您需要尽可能多地在UI线程之外处理它们。

我认为您可能会继续对用户的所有单击做出反应,因为尽管用户非常疯狂,但他们可能真的想做些什么。因此,“愚蠢就像愚蠢一样”似乎是一个足够公平的UI响应……听起来根本的问题是事件处理程序需要花费太长时间才能完成。任何阻止UI消息处理超过几毫秒的逻辑都可能会委托给后台线程。我完全同意Dan。听起来用户界面的响应时间很长。解决这个问题。如果用户界面的响应性非常好,那么就和建立该用例和标准的人谈谈。在我看来,你会继续对用户的所有点击做出反应似乎是合理的,因为尽管用户很疯狂,但他们可能真的想做些什么。因此,“愚蠢就像愚蠢一样”似乎是一个足够公平的UI响应……听起来根本的问题是事件处理程序需要花费太长时间才能完成。任何阻止UI消息处理超过几毫秒的逻辑都可能会委托给后台线程。我完全同意Dan。听起来用户界面的响应时间很长。解决这个问题。如果用户界面的响应能力非常强,那么就与建立该用例和标准的人进行交谈。