日期:2014-05-18  浏览次数:20869 次

报“线程间操作无效: 从不是创建控件的线程访问它”用代理不行
如代码:  
  ..............
  ExportThread = new Thread(new ThreadStart(delegateMethod));
  ExportThread.Start();
  }






  public void delegateMethod()
  {
  gate = new invokeDelegate(ExportMethod);
  this.Invoke(gate);
  }

我已经通过代理委托来invoke了,以上方法网上很多都说这样用,“线程间操作无效: 从不是创建控件的线程访问它”这个错误是不报了,但是感觉控件还是用主线程的,窗体还是会假死,问题根本没有解决,有没有高手指点一下呀!

------解决方案--------------------
可以直接在load事件里面关闭线程安全System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls=fasle;
------解决方案--------------------
C# code

if (label.InvokeRequired)
                {
                    label.Invoke(new del(setText));
                }



        private  void setText()
        {
        }

------解决方案--------------------
不是那样用的,这样
ExportThread = new Thread(new ThreadStart(delegateMethod));
Invoke(ExportThread);

方法里用Invoke不起作用的


------解决方案--------------------
http://topic.csdn.net/u/20111101/10/6ebf484a-f987-4eb0-add4-7167c0b6bcab.html
------解决方案--------------------
http://blog.csdn.net/wksnm0724/article/details/6902082
要理就要理到底
别有个方法就行了
------解决方案--------------------
this.Invoke(new MethodInvoker(delegate()
{
//do something
}));