关于控件异步调用的问题,请大家指点一二,在线等。
我创建了一个类用于更新UI线程中pictrueBox。
类中建立了一个私有成员private System.Windows.Forms.PictureBox pb;
有如下方法:
public void GetLCD()
{
MethodInvoker InitLCDInvoker = new MethodInvoker(InitLCD);
pb.BeginInvoke(InitLCDInvoker);
}
public void InitLCD()
{
pb.Width = btMsgPacket[11];
pb.Height = btMsgPacket[13];
pb.BackColor = System.Drawing.Color.Black;
pb.Visible = true;
}
在一个非UI线程中使用该类,并把UI线程创建的pictrueBox对象的引用传递给这个类的构造函数。
然后调用该类的GetLCD()方法,但是运行到pb.Visible = true;会报错。
错误:不是从创建该控件的线程调用
但是注释掉该句,前面的确可以正常运行
想了半天也不明白,为什么同样是对控件进行操作,有的可以而有的就不行。
比如这三句就可以正常运行:
pb.Width = btMsgPacket[11];
pb.Height = btMsgPacket[13];
pb.BackColor = System.Drawing.Color.Black;