我有一个实时应用程序,它以ListView控件的形式不断更新UI日志(RichTextBox控件)。使用通过事件接收的当前应用程序数据更新控件。我的应用程序运行速度非常慢,我发现它是由于ListView日志正在更新,这会阻止UI线程。可以想象,应用程序似乎对用户反应迟钝。
我知道可以在它自己的专用UI线程上启动WPF窗口。我想知道是否可以在它自己的UI线程上托管WPF控件,以便主UI线程更新窗口的其余部分而不被阻止?
如果无法做到这一点,请推荐替代方法以解决这一难题。
谢谢!
答案 0 :(得分:0)
您尚未发布任何代码,但为什么不将ListView
绑定到ObservableCollection
?您更新了集合,它会引发一个事件,告诉UI它已被更改 - 这就是更新UI。
有很多关于如何做到这一点的教程 - 可以在Switch On The Code上找到一个
答案 1 :(得分:0)
RichTextBox是定期更新的昂贵控件。
无法在自己的UI线程上托管WPF控件。
ObservableCollection在我的情况下不起作用,因为我无法直接访问我绑定的对象 - 第三方对象。
我的解决方案需要进行少量更改,它是基于ListView的UI Log控件。 ListView已针对批量和定期更新进行了优化 - 得益于VirtualisedStackPanel标记。