关于多线程的一点补充

 

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

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

        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值