如何在不冻结的情况下向StackPanel添加许多UserControl?

时间:2016-12-22 15:44:51

标签: c# multithreading user-controls async-await uwp

我尝试开发相当于Android应用程序(仅用于娱乐/ 2学习),我尝试在StackPanel中将大约3500个UserControls添加到我的GUI。

一个UserControl包含2个文本块(标题和副标题),两个按钮和一个图像。

如果我在UI线程中添加控件,线程将被阻塞大约6秒。但异步线程会抛出异常:

  

该应用程序调用了一个为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))

            var task = Task.Run(async () =>
        {
            MyUserControl1 News = new MyUserControl1();

            // EXAMPLE
            for (int i = 0; i < 3500; i++)
            {
                News= new MyUserControl1();

                News.Titel = i + " Titel";
                News.Untertitel = i + " Untertitel";

                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    UserControlCollection.Children.Add(News);
                });
            }

        });

我该怎么做才能解决这个错误?感谢您的帮助

0 个答案:

没有答案