解决方法
1.创建事件委托
c#不允许对跨线程的控件的访问,如需操作跨线程的操作需要通过委托(delegate),即是函数指针来操作跨线程。说明dgList控件不是该线程的控件,需要使用委托操作。比如:
delegate void SetListBoxCallback(string str); //定义委托(SetListBoxCallback名称可以变化,自己定义) public void SetListBox(string str){if (listBoxInfo.InvokeRequired) //控件是否跨线程?如果是,则执行括号里代码{SetListBoxCallback setListCallback = new SetListBoxCallback(SetListBox); //实例化委托对象listBoxInfo.Invoke(setListCallback, str); //重新调用SetListBox函数(新创建的委托进行相应控件的操作}else //否则,即是本线程的控件,控件直接操作{listBoxInfo.Items.Add(str); //具体的控件操作。eg:textBox1.Text =str;}}
2.创建线程(需要补全,实操未通过)
void XXXXXX()
{
ThreadStart X;
X= new ThreadStart(func); //将类的方法绑定X。
Thread Y=new Thread(Y); //创建新线程
Y.Start();//线程开始
}
void func(XXXXXXXXX) //类的一个方法
{
//对相应控件进行操作
}
ThreadStart是一个delegate
联系客服