c# 线程间操作无效: 从不是创建控件的线程访问它
作者:佚名 时间:2012-05-14
c#不允许对跨线程的控件的访问,上海网站建设如需操作跨线程的操作需要通过委托(delegate),即是函数指针来操作跨线程。说明dgList控件不是该线程的控件,需要使用委托操作。比如:
delegate void SetListBoxCallback(string str); //定义委托
public void SetListBox(string str)
{
if (listBoxInfo.InvokeRequired) //控件是否跨线程?如果是,则执行括号里代码
{
SetListBoxCallback setListCallback = new SetListBoxCallback(SetListBox); //实例化委托对象
listBoxInfo.Invoke(setListCallback, str); //重新调用SetListBox函数
}
else //否则,即是本线程的控件,控件直接操作
{
listBoxInfo.Items.Add(str);
}
}