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笔记第二节
    python笔记第一节
    hadoop 家族生态圈 小结
    JDBC:impala 连接DEMO
    关于excel表格的导入导出的工具类。(java 反射 excel)
    简单写了一个类似全文检索的帮助类。
    关于框架SSM中文乱码问题总结
    关于SpringMVC, bean对象中含有Date型变,改如何接收数据的问题。
    Nlog
    java手动编译
  • 原文地址:https://www.cnblogs.com/foundation/p/564522.html
Copyright © 2011-2022 走看看