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

来源:互联网 发布:行知中学 编辑:程序博客网 时间:2024/06/06 05:14

第一种方法 :在当前需要被访问的窗口的构造函数中 加上 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;        }
0 0
原创粉丝点击