第一种方法 :在当前需要被访问的窗口的构造函数中 加上 CheckForIllegalCrossThreadCalls = false;
(这种方法属于掩耳盗铃,没有从根本上解决问题,是初级的做法 ,只能用于测试)
第二种方法: 当在一个方法中要访问其他线程创建的对象,要追溯到创建这个对象的线程,在那个线程中访问它,用Invoke方法 创建一个委托 并且把参数传过去;
if (textBox1.InvokeRequired)//如果textBox1是跨线程创建的 这个是为true
{
textBox1.Invoke(new Action<TextBox, string>(SetValue),textBox1,a.ToString());//定义一个委托,在创建TextBox1的进程中给他赋值
}
}
private void SetValue(TextBox txt, string num)
{
txt.Text = num;
}