这里讨论两种多线程访问UI控件的方法,线程完成后更新Lable控件
如下图,第一种方式为方式1按钮按下,线程运行,并更新label
第二种方法为按下方式2按钮,线程运行,完成后更新label
新建winform项目程序,布局如上,大家可以不用配色,简单即可
引用
using System.Threading;
第一种方法:使用delegate和invoke来从其他线程中调用控件
当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它,所以我们判断这个属性来更新label的值
private void button1_Click(object sender, EventArgs e) { Thread thread1 = new Thread(new ParameterizedThreadStart(UpdateLabel)); thread1.Start("更新label"); } private void UpdateLabel(object str) { if (label1.InvokeRequired)