通常,C#是不许跨线程赋值的,如:Form1中有个textbox, 若开辟一个新的线程来给
这个textbox赋值时,会出现异常。
MSDN中提出了具体的做法,较为繁琐,就不说了。
我这里有个简单办法。
大多数能赋值的控件都有invoke 方法,invode方法中不是要一个Delegate型参数么,
那简单,可以随便找个.NET自定义的Delegate,如ThreadStart就行了,因此都可以这样做:
yourControl.Invoke(new ThreadStart(delegate(){
yourControl.Text = str; ==注意,这个str就是Form1主线程中的变量
}));
简单吧,,你就再无需定义委托了,也不用写额外的方法等繁琐的事情了。