黑马程序员技术交流社区
标题:
急急急。。。如何实现多个线程的互斥访问UI线程中的textBox控件???
[打印本页]
作者:
侯慧杰
时间:
2012-7-8 17:20
标题:
急急急。。。如何实现多个线程的互斥访问UI线程中的textBox控件???
在视频中只讲到了多个线程都访问UI线程某textBox存在的问题,但是没有提出解决方案,我想问一下如何实现多个线程互斥访问textBox控件啊??????
作者:
许庭洲
时间:
2012-7-9 09:21
可以声明一个委托和定义一个delegate的方法来实现多个线程互斥访问textBox控件。
作者:
小高
时间:
2012-7-9 09:28
一,是通过设置
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
在你的程序初始化的时候设置了这个属性,而且在你的控件中使用的都是微软Framework类库中的控件的话,系统就不会再抛出你上面所说的这个错误了。
二,就是委托了,个人建议用这种方法
首先在WinForm窗体中拖入ListBox控件,然后参照以下代码:
Thread t1;//声明一个全局线程 private void Form1_Load(object sender, EventArgs e) { t1 = new Thread(new ThreadStart(BackgroundProcess)); t1.Start(); //开始 } delegate void aa(); private void BackgroundProcess() { // 将委托实例化 aa a= delegate() { for (int i = 0; i < 50; i++) { listBox1.Items.Add("Iterations: " + i.ToString()); Thread.Sleep(300); listBox1.Refresh(); } }; listBox1.Invoke(a); }
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2