zoukankan      html  css  js  c++  java
  • 关于多线程的一点补充

     

    多线程与工作流一文中将多线程设计思路与工作流设计思路进行了一下对比,突然想到了这个问题,就顺手发上来了

     在开发WF的宿主程序中,我们或多或少的会用到多线程,如果宿主是WinForm程序,也有可能会用到跨线程访问UI控件的需要

    看一下在NET1.1中的线程访问UI控件

             private void button1_Click(object sender, System.EventArgs e)

             {

                  System.Threading.ThreadStart s =new System.Threading.ThreadStart(work);

                  System.Threading.Thread obj = new System.Threading.Thread(s);

                  obj.Start();

             }

     

             void work()

             {

                  textBox1.Text = "1";

             }

    上段代码在NET1.1中没有什么问题,可在NET2.0中,默认,UI控件只能由创建该控件的线程访问,所以上段代码在NET2.0中会报一个跨线程访问UI控件的异常。

    看一下在NET2.0中如何实现上面的功能

            delegate void 委托(object v);

     

            void work2(object o)

            {

                委托 x = new 委托(中介程序);

                this.Invoke(x, o);

            }

     

            void 中介程序(object v)

            {

                textBox1.Text = v.ToString();

            }

            private void button2_Click(object sender, EventArgs e)

            {

                System.Threading.Thread obj = new System.Threading.Thread(work2);

                obj.Start("1");

            }


  • 相关阅读:
    Python之内置函数再总结
    内置函数
    函数递归
    字符编码之文件处理
    文件处理
    python1数据链接总结
    知识点练习day9
    第一周作业
    python1
    网络基础预习
  • 原文地址:https://www.cnblogs.com/foundation/p/564522.html
Copyright © 2011-2022 走看看