c# 2.0中 子线程是不可以操作组件的,因为组件是主线程生成的,一切在主线程中显式生成的线程都叫做子线程。方法有2中,下面给出委托的解决办法,这个最保险:
public partial class Form1 : Form
{
public static TextBox tb;
public Form1()
{
InitializeComponent();
tb = this.textBox1;
}
private void button1_Click(object sender, EventArgs e)
{
Class1 c1 = new Class1();
Thread t = new Thread(c1.test);
t.Start();
}
}
namespace WindowsApplication1
{
class Class1
{
private delegate void setTextDelegate(String str);
private void setText(String str)
{
Form1.tb.Text = str;
}
public void test()
{
if (Form1.tb.InvokeRequired)
{
setTextDelegate s = new setTextDelegate(setText);
Form1.tb.Invoke(s, new String[] { "123" });
}
else
{
Form1.tb.Text = "234";
}
}
}
}
主要就是invoke方法的调用,这个方法是主线程生成的组件调用的。