可以参考http://hi.baidu.com/yyq745201/item/1441d2dc4aff18f292a97423
里面说到的方法一:在拥有该控件的主窗体的构造函数中添加CheckForIllegalCrossThreadCalls = false;这样可能允许你在非控件创建线程上执行控件成员。
至于调用Control.BeginInvoke他是会回到主线程执行的,他将消息异步插入到控件的消息队列,待控件创建线程(主线程)进行执行。
只要我用Control.Invoke方法,子线程调用的方法立马就变成了主线程
要的就是这个结果,因为访问UI控件被要求只能在主线程中执行,也就是说访问UI控件只能在主线程中。
....可是子线程确实有一些比较耗时的操作,而且确实要访问UI控件的数据,有没有解决方案?
@微澜: 一步一步来,先把从UI读取或写入数据的代码和处理这些数据的代码分开来,然后在子线程中执行数据处理的逻辑,完成后再在主线程中访问控件。
CheckForIllegalCrossThreadCalls = false
这个最实用了