上篇文章已经写过 又发现一种更简单的方法,和大家分享,通常,C#是不许跨线程赋值的,如:Form1中有个textbox, 若开辟一个新的线程来给
这个textbox赋值时,会出现异常。
MSDN中提出了具体的做法,较为繁琐,就不说了。
我这里有个简单办法。
大多数能赋值的控件都有invoke 方法,invode方法中不是要一个Delegate型参数么,
那简单,可以随便找个.NET自定义的Delegate,如ThreadStart就行了,因此都可以这样做:
yourControl.Invoke(new ThreadStart(delegate(){
yourControl.Text = str; ==注意,这个str就是Form1主线程中的变量
}));
或者
yourControl.Invoke(new Action(()=>yourControl.Text = str));
简单吧,,你就再无需定义委托了,也不用写额外的方法等繁琐的事情了。
在这个园里找到的,原文如下连接
http://www.cnblogs.com/Mayvar/archive/2012/01/19/wanghonghua_201201190319.html