报“线程间操作无效: 从不是创建控件的线程访问它”用代理不行,该如何解决
报“线程间操作无效: 从不是创建控件的线程访问它”用代理不行
如代码:
..............
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;
------解决方案--------------------
如代码:
..............
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
}));