如何处理在WPF TreeView中显示数据的大延迟

时间:2012-04-15 09:40:27

标签: c# wpf xaml treeview delay

我正在使用WPF TreeView向用户显示统计信息。 TreeView通过MVVM绑定到一堆对象。

有时候,当TreeNode确实包含很多项时,显示所有这些项需要几秒钟。在此期间,应用程序似乎卡住了。

我希望TreeView在此延迟期间显示响应。

如果我在WinForms中这样做,我会显示某种加载图标,并在后台线程中进行计算,之后我会更新相应的TreeNode。

在WPF中处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您需要使用线程,以便在处理大量数据时您的应用程序不会卡住。

示例:

在我正在开发的应用程序中,我需要在所有文件夹中搜索特定文件。这会冻结应用程序(甚至不让我最小化窗口),直到完成整个搜索。

为了避免这种情况,我使用了一种名为BackgroundWorker的东西,它让我在后台执行搜索。这意味着我可以在后台进行繁重的工作时控制我的应用程序。

Backgroundworker还有一个WorkerReportsProgress属性。启用此功能后,您可以轻松更新进度条或百分比计数器,让用户知道在工作时发生的情况。

在专业C#4和.NET 4一书中对它进行了很好的解释。 它由Wrox出版。

答案 1 :(得分:1)

  1. 使用线程进行UI呼吸。

  2. 仅在用户请求时才加载TreeView和子节点的根节点,方法是单击[+]。

  3. 使用Data Virtualization加载,因此仅显示 在UI上实际可见的数据。

  4. 通过结合这些技术,即使是你自己的一部分,也会显着提高性能。