• 关于多线程的一点补充


     

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

     在开发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");

            }


  • 相关阅读:
    常用模块Part(1)
    递归函数
    python 生成器函数
    python 迭代器与生成器
    python 函数进阶
    python 装饰器进阶
    python time模块
    python 初始函数
    python 文件操作
    python 一些小知识
  • 原文地址:https://www.cnblogs.com/foundation/p/564522.html
Copyright © 2020-2023  润新知