当我想在Windows表单工作时使用委托类进行调用时,我总是需要使用InvokeRequired。这没问题。但是,当它正在工作时,谁改变了InvokeReuqired属性呢?
请查看此图片:
请查看此图片:
![alt text](https://content.screencast.com/users/uzay95/folders/Jing/media/813e6d67-2b86-4a15-841d-526d9bcb389e/2009-10-16_1652.png)
InvokeRequired
是在从创建它的线程不同的线程访问控件时为true
,否则为false
。
更直接地回答你的问题,InvokeRequired
属性并不是在特定时间点"改变";更准确地说,它可能会基于你所访问的线程返回不同的值。
在button1_Click
中调用了Delegate.BeginInvoke
,这意味着SayListeyeEkle
将在线程池线程中被调用,这意味着InvokeRequired
为true是完全正确的。如果您直接从UI线程中调用ListeyeEkle
,那么InvokeRequired
就不会为true。