我有一个连接到USB设备的WPF应用程序。所述设备以大约10/秒的速率引发事件。这些事件中的数据会更新条形图和折线图。条形图表示每个事件发生时的数据。折线图用于显示一段时间内的值,并从测量开始时的历史值集合中读取。
我的问题是,在大约3-5分钟的测量之后,UI变得非常慢,最终没有响应。我认为这是因为下面的代码片断出现得太频繁,最终锁定了UI线程。
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
Update the collection here.
}));有没有更好的方法来更新集合,以避免锁定UI?
发布于 2021-02-02 17:51:31
当然你已经解决了你的问题。但是,这不是内存泄漏。
BeginInvokes排队的“更新集合”-tasks很可能比分派器所能完成的要多。在某个时刻,调度器必须处理数以千计的任务,同时BeginInvoke每秒将10个新任务排入队列。要解决这个问题,您需要确保Dispatcher不会被新任务压垮。您可以仅使用最新数据从单独的线程更新UI。
https://stackoverflow.com/questions/54240344
复制相似问题