将UI元素从C#中的另一个线程分配给另一个UI元素



我想在WPF中以C#代码编程制作网格元素,并且因为它需要大量处理,所以我使用了一个线程。

"调用线程无法访问此对象,因为不同 线程拥有它。"

我的代码就是这样:

PrepareGrid gridMaker = new PrepareGrid();
Thread fetchGrid = new Thread(() => {
    GridContainer.Dispacher.Invoke(() => GridContainer.Content = gridMaker.getGrid());
});
fetchGrid.SetApartmentState(ApartmentState.STA);
fetchGrid.Start();

PrepareGrid是准备网格的类,其getGrid的方法返回结果网格,GridContainer是WPF滚动查看器

我使用了嵌套调度员,但它不起作用


为什么我不能将Task用于WPF元素?制作网格的过程是如此巨大,Thread仅使用一个处理器的一个核心

在WPF中,您可以具有多个UI线程,但是必须在其创建的线程上使用UI元素。您在另一个线程中创建它,对吗?因此,您无法在默认UI线程中使用它。

我怀疑"巨大的处理"根本不是来自实际UI对象的创建。确切找出"巨大的处理"所包含的内容,然后将其放在另一个线程上。或将其他线程创建实际控件或控件时,将其调用到主UI线程中。

最新更新