WPF高频事件和更新UI

时间:2019-01-17 16:32:36

标签: c# wpf multithreading

我有一个连接到USB设备的WPF应用程序。所述设备以大约10 /秒的速率引发事件。这些事件中的数据将更新条形图和折线图。条形图表示每个事件发生时的数据。折线图用于显示一段时间内的值,并从测量开始就从一组历史值中读取。

我的问题是,经过大约3-5分钟的测量,UI变得非常缓慢,最终无响应。我认为这是由于以下代码片段频繁出现并最终锁定了UI线程。

fp

是否有更好的方法来更新收藏集,以便不锁定UI?

2 个答案:

答案 0 :(得分:0)

每秒更新10次UI毫无意义。您将看不到太多更新。我建议节制他们。您可以使用Rx库轻松进行各种限制。

答案 1 :(得分:-1)

当然你已经解决了你的问题。但是,这不是内存泄漏。
最有可能的是,BeginInvokes 将更多的“更新集合”任务排入队列,而不是 Dispatcher 所能处理的。在某些时候,调度程序必须处理数千个任务,同时 BeginInvoke 每秒将 10 个新任务排入队列。 要解决此问题,您需要确保 Dispatcher 不会被新任务淹没。您可以仅使用最新数据从单独的线程更新 UI。