您的位置:首页 > 其它

关于多线程的一点补充

2006-11-18 14:03 281 查看
多线程与工作流一文中将多线程设计思路与工作流设计思路进行了一下对比,突然想到了这个问题,就顺手发上来了

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

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: