系统出错,提示如下:
  线程间操作无效:从不是创建控件"m_TypecomboBox"的线程访问它。这种问题一般怎么解决,都有什么方法?

解决方案 »

  1.   

    多加个委托
            private void ThreadCreatTree()   //通过委托处理
            {
                MethodInvoker In = new MethodInvoker(this.CreatTree);
                this.BeginInvoke(In);
            }
    线程调用委托,委托调用其他
      

  2.   

    在创建的线程里面包装一个访问Combobox的函数。
    然后在调用的线程用MethodInvoker来调用...
      

  3.   

    vs2005出于安全考虑,不容许这样的操作,即线程间相互调用,你在线程间更新界面的操作就触犯了这一点,解决的办法有以下两个:第一:在构造函数中加上这样一句话即可:
    CheckForIllegalCrossThreadCalls = false;
    加上这句话后,线程的处理就同vs2003完全一样了,即允许线程间相互调用第二:利用委托代理来实现:
    举个很简单的例子,比如我想在线程中对窗体中的textbox进行更新,可以这样来实现,如下:        //定义一个代理
            public delegate void MyInvoke(string str);
            //更新界面的方法
            private void UpdateTextBox(string str)
            {
                textBox1.Text +=str;
            }        //在线程回调函数里需要更新界面的地方,这样操作:
            .....
            MyInvoke mi = new MyInvoke(UpdateTextBox);
            this.BeginInvoke(mi, new object[] { "i" });
            .....
    楼主可以试下,也可以上网再查下资料...
      

  4.   

    为Windows应用创建简单的异步调用模式
    http://www.microsoft.com/china/MSDN/library/architecture/AsynCallPattern.mspx