用户操作
[即时聊天] [发私信] [加为好友]
常强ID:chqchq
9501次访问,排名11947(2),好友0人,关注者0人。
chqchq的文章
原创 5 篇
翻译 0 篇
转载 3 篇
评论 1 篇
最近评论
aawwmate:大哥,你这代码是MS SQLSERVER的吧
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 线程与可视化单元的通讯收藏

    新一篇: C#中Join()方法实现线程的顺序执行 | 旧一篇: Windows XP远程桌面连接

      最近用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);

            }

    发表于 @ 2006年05月17日 09:46:00|评论(loading...)|编辑

    新一篇: C#中Join()方法实现线程的顺序执行 | 旧一篇: Windows XP远程桌面连接

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © chqchq