您的位置:首页 > 其它

多线程中跨线程访问的解决方法

2016-03-18 23:20 267 查看
第一种方法 :在当前需要被访问的窗口的构造函数中 加上 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程