NO IMAGE

 

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方法的呼叫,這個方法是主執行緒生成的元件呼叫的。