网站建设技术团队
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);         
           }
        }