Dispatcher交叉线程

时间:2010-07-06 09:35:17

标签: wpf multithreading

我有一个WPF网格和一个值列表。值列表具有行和列属性以及内容值。在格式化的网格中显示200到14,000个值。

我在网格中添加了行和列,然后在正确的行/列位置向网格添加了文本块。

这很有效,直到我有大约8,000个值,然后它变慢。为了补救我把它放到一个线程来执行布局,问题是,我的TextBlocks是在一个线程上创建的,然后当我尝试使用UI调度程序将它们添加到Grid的Children成员时,文本块在另一个线程上

所以问题是,我可以在创建Textblocks之后将它的线程关联性切换到UI线程吗?

由于 欧文

1 个答案:

答案 0 :(得分:1)

您是要一次显示所有8000个值还是有一些滚动条?

向视图添加8000个控件将被视为糟糕的设计。

如果值具有相同的模板,为什么不根据您的设计选择ListView并对其进行模板化?这样你就可以将它绑定到一个ObservableCollection,它可以使用你拥有的值列表填充。可以使用Dispatcher's BeginInvoke方法

使填充异步