从UI线程读取数据是否需要调用?

时间:2015-10-28 17:17:38

标签: .net vb.net multithreading

据我所知,从另一个线程更新UI需要调用,但是只是从UI读取数据时也需要调用吗?

例如,如果根据在大型网格中找到的数据运行计算,在读取网格中找到的值并将它们分配给计算中使用的变量时,是否需要调用网格?

如果没有,为什么不呢?

是否存在性能问题?是否最好将所有数据缓存到数组(或数据表),然后运行计算或每次读取数据时调用网格(例如,在每一行)?

我特别询问VB.NET,虽然我怀疑其他.NET语言有很大不同。

2 个答案:

答案 0 :(得分:1)

这一切都取决于控件,有些可能会让你从非UI线程读取一些可能没有。

问题的最佳解决方案是不直接从控件中读取,拥有一些保存数据的后备对象,然后使用绑定让控件使用来自后备对象的数据。这是MVVM(模型,视图,视图模型)背后的基本前提,这是WPF中非常流行的模式,但在Winforms中也可以使用。

答案 1 :(得分:0)

没有。需要调用才能更新UI,因为只能从前台线程更新UI。关于哪个线程可以读取数据没有限制。