线程间操作无效: 从不是创建控件的线程访问它。

这个问题也是纠结了我半天,后来才弄懂!解决办法如下:

方法一:

线程开始的时候加这么一句,OK!

Control.CheckForIllegalCrossThreadCalls = false;

方法二:

委托,每个控件都有个InvokeRequired的属性,判断一下是不是true,是的话进行Invoke操作,OK!

//建立个委托
private delegate string returnStrDelegate();

//搞个最简单滴取值滴方法~
private string returnName()
        {
            return CB_NAME.SelectedValue.ToString();
        }

//判断一下是不是该用Invoke,不是就直接返回
private string returnCB(returnStrDelegate myDelegate)
        {
            if (this.InvokeRequired)
            {
                return (string)this.Invoke(myDelegate);
            }
            else
            {
                return myDelegate();
            }
        }

//别的线程里调用
string _name= returnCB(returnName);
转载请标明出处 http://blog.csdn.net/jasonhds/ 版权所有,翻版必究~谢谢合作



你可能感兴趣的:(线程,delegate,线程间操作无效,从不是创建控件的线程访问它)