InvokeRequired属性的vaLue何时更改?

时间:2009-10-16 13:59:46

标签: c# multithreading delegates invokerequired

当我想在Windows窗体工作时使用委托类进行调用时,我总是必须使用InvokeRequired。没关系。但是谁在工作时更改了InvokeReuqired属性。 请检查此图片: alt text

3 个答案:

答案 0 :(得分:6)

当从除创建它的线程以外的线程访问控件时,

InvokeRequiredtrue,否则为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来协调它需要用于......