如何处理在WPF TreeView中显示数据的大延迟
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理在WPF TreeView中显示数据的大延迟相关的知识,希望对你有一定的参考价值。
我正在使用WPF TreeView向用户显示统计信息。 TreeView通过MVVM绑定到一堆对象。
有时,当TreeNode确实包含很多项时,显示所有这些项需要几秒钟。在此期间,应用程序似乎卡住了。
我希望TreeView在此延迟期间显示响应。
如果我在WinForms中这样做,我会显示某种加载图标,并在后台线程中进行计算,然后我将更新相应的TreeNode。
什么是在WPF中处理这个问题的最佳方法?
答案
您需要使用线程,以便在处理大量数据时您的应用程序不会卡住。
例:
在我正在开发的应用程序中,我需要在所有文件夹中搜索特定文件。这会冻结应用程序(甚至不让我最小化窗口),直到完成整个搜索。
为了避免这种情况,我使用了一种名为BackgroundWorker的东西,它让我在后台执行搜索。这意味着我可以在后台进行繁重的工作时控制我的应用程序。
Backgroundworker还具有WorkerReportsProgress属性。启用此功能后,您可以轻松更新进度条或百分比计数器,以便让用户了解在执行工作时发生的情况。
它在Professional C#4和.NET 4一书中得到了很好的解释。它由Wrox出版。
另一答案
- 使用线程来进行UI呼吸。
- 仅在用户请求时才加载
TreeView
和children的根节点,方法是单击[+]。 - 使用Data Virtualization加载,因此仅显示UI上实际可见的数据。
通过结合这些技术,即使是其中的一部分,您已经将显着提高性能。
以上是关于如何处理在WPF TreeView中显示数据的大延迟的主要内容,如果未能解决你的问题,请参考以下文章
Python Selenium - 如何处理在WebDriverWait完成之后才显示的警报?