通常,C#是不许跨线程赋值的,如:Form1中有个textbox, 若开辟一个新的线程来给
这个textbox赋值时,会出现异常。
我这里有个简单办法。
大多数能赋值的控件都有invoke 方法,invode方法中不是要一个Delegate型参数么,
那简单,可以随便找个.NET自定义的Delegate,如ThreadStart就行了,因此都可以这样做:
yourControl.Invoke(new ThreadStart(delegate(){
yourControl.Text = str; ==注意,这个str就是Form1主线程中的变量
}));
####################################################################################################
最新发现的跨线程的使用方法:
this.Invoke(new Action(() =>
{
btnOpen.Enabled = true;
btnClose.Enabled = false;
cmb_PixelFormat.Enabled = false;
textBox_AcquisitionFrameCount.Enabled = false;
textBox_ExposureTime.Enabled = false;
comboBox_SharpnessAuto.Enabled = false;
}));