线程与可视化单元的通讯

原创 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);

        }

线程通信和进程通信区别(线程进程区别)

前言:腾讯笔试中多道选择题考到这个问题,这里总结一下。学习Java的童鞋可能对于线程的理解要比学php好很多。本文参考于线程通信与进程通信的区别 。 进程和线程的区别:对于进程来说,子进程是父进程的...
  • Return_True_hang
  • Return_True_hang
  • 2017年04月08日 10:37
  • 834

多线程之线程通信

简介  线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。  线程...
  • jiazhen
  • jiazhen
  • 2007年05月16日 15:37
  • 10219

【Android 并发编程】线程间通信的三种基本方式,android线程

1. 使用管道流Pipes “管道”是java.io包的一部分。它是Java的特性,而不是Android特有的。一条“管道”为两个线程建立一个单向的通道。生产者负责写数据,消费者负责读取数据。 ...
  • bfboys
  • bfboys
  • 2016年10月15日 22:37
  • 1311

深入理解进程和线程

在之前的博客里面(进程通信),我简单的区分了一下进程和线程,然后过了一个月我发现之前的理解远远不够。 先把之前的简单理解贴一下, 进程是装入内存运行的程序段,是许多的系统对象拥有权的集合,换句大家经常...
  • u012999985
  • u012999985
  • 2015年10月30日 23:40
  • 3675

C#线程通信和异步委托

第一次写关于技术原创···· 至于要用到题目说到的这种方法,大概是因为在程序执行一些耗时的操作的时候,为了使得界面上不至于处于卡死状态,就让这些耗时的操作放在一边慢慢执行,并用一些方法来监视这些工...
  • yixiantian7
  • yixiantian7
  • 2013年08月26日 21:25
  • 1525

Android 面试题 - 线程间通信

Android是基于Java的,所以也分主线程,子线程!  主线程:实现业务逻辑、UI绘制更新、各子线程串连,类似于将军;  子线程:完成耗时(联网取数据、SD卡数据加载、后台长时间运行)操作,类...
  • jiankeufo
  • jiankeufo
  • 2017年01月03日 16:03
  • 799

线程如何实现同步和通讯

线程同步 什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题。 实现同步机制有两...
  • gjb270806922
  • gjb270806922
  • 2016年11月25日 19:59
  • 2527

vc 基于对话框多线程编程实例——线程之间的通信

实例:
  • sj19890401
  • sj19890401
  • 2015年01月07日 11:45
  • 665

Java 并发:线程间通信与协作

线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作,最典型的例子就是生产者-消费者问题。本文首先介绍 wait/notify 机制,并对实现该机制的两种方式——synchronized+...
  • justloveyou_
  • justloveyou_
  • 2017年02月08日 17:43
  • 3281

避免单线程单元 (STA) COM 组件

 默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行。若要运行它们,必须在 .aspx 文件内将 ASPCompat=true 属性包含在 @ Page 指令中。这样就将执行用的...
  • 21aspnet
  • 21aspnet
  • 2004年10月25日 00:24
  • 3580
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程与可视化单元的通讯
举报原因:
原因补充:

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