Vb.net 显示多个标签的有效方法

Vb.net 显示多个标签的有效方法,vb.net,multithreading,winforms,Vb.net,Multithreading,Winforms,我正在寻找一个有效的,快速的方式来显示多个标签在一个快速的时尚。除了一个接一个地替换标签的所有.text属性外,还有什么更好的方法可以做到这一点?我的理解是,每当您更新.text属性时,必须重新绘制UI,如果您有50多个控件要更新,这将增加延迟 我知道线程是一个选项,但当我尝试这个方法时,我没有看到太大的区别,因为我无法同时加载2个标签,我仍然必须等待UI线程,然后标签才会更新。还有什么其他方法可以有效地快速加载50多个标签?现在的方式需要相当长的时间(3-4秒),我觉得这可以降低。信息是从后端

我正在寻找一个有效的,快速的方式来显示多个标签在一个快速的时尚。除了一个接一个地替换标签的所有.text属性外,还有什么更好的方法可以做到这一点?我的理解是,每当您更新.text属性时,必须重新绘制UI,如果您有50多个控件要更新,这将增加延迟


我知道线程是一个选项,但当我尝试这个方法时,我没有看到太大的区别,因为我无法同时加载2个标签,我仍然必须等待UI线程,然后标签才会更新。还有什么其他方法可以有效地快速加载50多个标签?现在的方式需要相当长的时间(3-4秒),我觉得这可以降低。信息是从后端系统获取的,因此我没有数据集/等选项。

您必须将从数据库检索数据的代码(使用后台线程)和更新UI的代码(应该尽快进行,因为您不想阻塞UI太长时间)

我的建议是使用
BackgroundWorker
组件来检索所有50个标签的数据。当BackgroundWorker引发
RunWorkerCompleted
事件时,您调用表单的
SuspendLayout
函数,更新标签的所有值,然后调用
ResumeLayout
。在调用ResumeLayout之前,SuspendLayout会停止控件重画


更多信息:,

您可以发布您的代码吗?3-4s对于50个标签来说太慢了。你是说后端需要3-4秒才能为标签提供数据吗?我无法发布代码,从后端抓取它实际上只是代码。我不确定是否有办法加快这一进程。如果这是由于后端或连接到后端的代码造成的,我可能无法控制它,只是尝试一些方法:)如果问题是从后端获取数据,您应该将问题的解决方案(以及此处的问题)集中在这一部分。更新许多标签的值并不是什么大事(只需更改相应的.Text属性)。您的问题是尽快检索数据,但如果我们对此一无所知,我们无法就此提出建议。我曾尝试实现此方法,但在应用程序遇到RunWorkerCompleted事件后立即崩溃时遇到了一些问题。在VisualStudio中的任何地方是否有崩溃的痕迹,在那里我可以看到导致崩溃的原因?这显然是由于一些跨线程问题造成的,但我不确定在RunWorkerCompleted事件中放置断点的位置,并逐步检查代码。