原因:
C#不允许在一个线程中直接访问或操作另一线程中创建的控件
也就是不允许多个线程同时对一个对像进行修改.
解决方法:
用Delegate,按你上面写的代码应该改成:
private void Form2_Load(object sender, EventArgs e)
{
Form2.CheckForIllegalCrossThreadCalls = true;
Thread t = new Thread(test);
t.Start();
}
public void test()
{
//Bitmap b = new Bitmap(@"c:\aaa.bmp");
// this.pictureBox1.Image = b;
// this.textBox1.Text = "sss";
SetText("sss");
}
//-------------
private delegate void SetTextHandler(string str);
private void SetText(string str)
{
if (textBox1.InvokeRequired)
{
SetTextHandler handler = SetText;
textBox1.Invoke(handler, new object[] {str});
}
else
{
textBox1.Text = str;
}
}