c# 线程中操作线程外的组件
在新开启的一个线程当中,如果想在线程中访问此线程以外的控件,.NET会弹出一个线程安全的报错。下面简单介绍一下如何使用线程外控件
第一步: 创建线程了 (看代码)
private void Form1_Load(object sender, EventArgs e)
{
Thread ss = new Thread(new ThreadStart(myt2));
ss.Start();
}
private delegate void SetLabelValue(string str); //定义一个委托
private void myt2()
{
int s = 100;
while (true)
{
s++;
SetValue2Lav(s.ToString()); //这里的关键的地方
Thread.Sleep(2000);
}
}
private void SetValue2Lav(string value) //委托要使用的方法
{
SetLabelValue s = new SetLabelValue(SetValue2Lav);
if (label3.InvokeRequired) //这个是用来判断是否为外部调用
{
label3.Invoke(s, new object[] { value }); //使用invoke的方法,利用委托来解决线程安全的问题
}
else
{
label3.Text = value;
}
}
哈哈。这个示例很简单。。。。