非UI线程访问UI线程里的控件但不更新它亟需invoke吗

非UI线程访问UI线程里的控件但不更新它需要invoke吗
非UI线程访问UI线程里的控件但不更新它需要invoke吗
r如:

Thread thread = new Thread(delegage()=>

{

   int str = this.label.Text;

})
------解决思路----------------------

几乎每个人都知道跨线程访问时,需要调用控件(或Form)的Invoke方法,其用途是将操作排入UI线程来执行;但又有多少人知道为什么要让UI线程来执行呢?

你也可以设置CheckForIllegalCrossThreadCalls = false,不检查也不会抛出异常,但这是自欺欺人的做法,就和掩耳盗铃似的。

你可以想象,同时有100个线程对同一个lable赋值,你能确定lable最终的值吗,你能保证线程都互不干扰不死锁吗?你能保证程序不会崩溃吗?

Invoke就是解决此类问题的,其目的只有一个不管你有多少个赋值操作请排队。
------解决思路----------------------
不可以访问。
从设计上来说,你以这样的方式写代码是不合适的,业务逻辑与UI耦合太厉害。
------解决思路----------------------
取决于这个控件的这个属性的实现,Text是属性,也就是一个get_Text()方法
假如它就是简单的return this._text;这当然没问题,跟其他的类一样

但是你无法确定某个控件,尤其是第三方自定义控件的get逻辑,假如它里面还有访问或者更新其他的东西,那么肯定就出问题了
同意LS的说法,更新界面和业务处理分开,处理完了把结果返回去,再更新界面