线程与可视化单元的通讯

原创 2006年05月17日 09:46:00

  最近用C#做了一个小程序,里面用到了线程。在运行期间,线程需要对可视化单元进行处理。按照已往使用方法,便在线程上直接添加,以更改该单元的值,如:richTextBox.Appendtext="...."。但结果程序提示异常:不是创建控件“richTextBox”的线程访问它。不知道如何处理。

  后来查阅资料发现:在.NET中每个线程有它自己的进程空间,一个线程里的对象的地址作为另一个线程的地址是没有用的。因此,试图访问另一个进程空间里的对象会引起一个不能控制的异常,从而导致程序崩溃。

  解决方法:

  Methodinvoker委派的BeginInvoke方法,用于一个进程空间的线程里调用另一个进程里的方法。这些方法对于线程来说是安全的,在多线程的环境下也可以使用。

  部分代码如下:

  private void UpdateRichTextBox()
        {
            richTextBox1.AppendText("...");
        }

 

   private void button1_Click(object sender, EventArgs e)
        {

    thread = new Thread(new ThreadStart(recieve));
                thread.Start();

        }

        private void recieve()
        {

               MethodInvoker mi = new MethodInvoker(this.UpdateRichTextBox);
               this.BeginInvoke(mi);

        }

相关文章推荐

线程的内存可视化

1 当线程调用pthread_create时,它所能看到的内存值也是它建立的线程能够看到的。任何在调用pthread_create之后向内存写入的数据,可能不会被建立的线程看到,即使写操作发生在启动新...

有限单元法动力学仿真可视化软件

  • 2011年11月15日 16:19
  • 20.55MB
  • 下载

企业可视化通讯解决方案

  • 2013年01月25日 10:48
  • 31KB
  • 下载

15/9/9/Handler主线程和子线程之间的通讯/AsyncTask

Handler子线程向主线程发送消息1.由于在UI活动中不能进行耗时操作,因此不能再UIActivity中创建线程要不然会报错 2.Handler就是在Thread和UI主线程之间进行通讯的桥梁,线...

创建线程通讯

  • 2016年04月18日 01:20
  • 8KB
  • 下载

黑马程序员——JAVA基础之多线程的线程间通讯等

------- android培训、java培训、期待与您交流! ----------     wait(); 在其他线程调用此对象的notify()方法或notifyAll()方法,或者超过指...

ioking无锁线程通讯(no-lockl)demo

  • 2015年04月09日 20:23
  • 311KB
  • 下载

线程之间的通讯---SynchronizationContext

过年前的这段时间真是舒服,没有了平时项目发版的紧张,剩下的就是只有在网上闲逛了,哈哈!      今天早上闲逛的时候,在CodeProject发现了个不错的文章,英文好的直接去http://www....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程与可视化单元的通讯
举报原因:
原因补充:

(最多只允许输入30个字)