当我想在Windows窗体工作时使用委托类进行调用时,我总是必须使用InvokeRequired。没关系。但是谁在工作时更改了InvokeReuqired属性。
请检查此图片:
答案 0 :(得分:6)
InvokeRequired
为true
,否则为false
。
为了更直接地回答您的问题,并不是InvokeRequired
属性在特定时间点“更改”;更准确地说,它可能会根据您访问它的线程返回不同的值。
答案 1 :(得分:4)
您在Delegate.BeginInvoke
中调用button1_Click
,这意味着将在线程池线程中调用SayListeyeEkle
- 这意味着InvokeRequired
完全正确。如果您在UI线程中直接从ListeyeEkle
调用button1_Click
,则不会为真。
答案 2 :(得分:1)
你是什么意思“改变InvokeRequired属性”?你的意思是真/假价值在变化吗?如果它返回true,并且您对BeginInvoke进行委托调用,那么在委托中,更好的值会更改。重点是“切换”控件在上创建的线程。当在创建控件的线程以外的任何线程上执行具有InvokeRequired的代码行时,InvokeRequired将返回true。只有在创建控件的同一线程上执行时才会返回false。该物业可能已被命名
NotOnThreadIWasCreatedIn
,因为这真的是它所做的一切。它被命名为InvokeRequired
来协调它需要用于......