1

我正在尝试找到一种方法将多个(100 多个具有大量数据的)控件添加到 WPF GUI,而不会自行阻塞 GUI 线程。这就是我当前创建控件的方式:

我在并行线程中异步创建控件,并且可以将它们添加到 GUI,但是当涉及到 container.Children.Add() 时,GUI 被阻止。

我的第一次尝试是通过异步方法中的任务创建它们..

var a = Task.Factory.StartNew(() =>
{
    foreach (UserElement element in userElements)
        this.Dispatcher.Invoke(() => { UserElementsContainer.Children.Add(element); });
});
await a; //Won't work with or without await.

还有其他方法吗?

4

1 回答 1

4

您应该在需要显示它们时使用虚拟化和加载控件 - 这样您可以减少加载控件所需的时间,因为您一次只显示几个。

查看这个演示虚拟化 Canvas 控件的示例。Microsoft 虚拟化 WPF 画布

还有这篇关于更多虚拟化技术参考的帖子:WPF 中 UI 虚拟化的资源和指南

于 2015-08-24T09:23:21.747 回答