3

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

4

3 回答 3

6

InvokeRequiredtrue当控件从创建它的线程以外的线程访问时,false否则。
为了更直接地回答您的问题,并不是InvokeRequired属性在特定时间点“变化”;更准确地说,它可能会根据您访问它的线程返回不同的值。

于 2009-10-16T14:02:03.063 回答
4

您正在调用Delegate.BeginInvokein button1_Click,这意味着SayListeyeEkle将在线程池线程中调用 - 这意味着它是完全正确的InvokeRequired。如果您在 UI 线程中直接从, 调用,那将是不正确的。ListeyeEklebutton1_Click

于 2009-10-16T14:02:07.417 回答
1

您是什么意思“更改 InvokeRequired 属性”?你的意思是真/假值正在改变吗?如果它返回 true,并且您对 BeginInvoke 进行了委托调用,那么之后,在委托中,值更好地发生了变化。重点是“切换”到创建控件的线程。当在创建控件的线程以外的任何线程上执行带有 InvokeRequired 的代码行时,InvokeRequired 将返回 true。只有在创建控件的同一线程上执行时,它才会返回 false。该属性可能已命名 NotOnThreadIWasCreatedIn,因为这就是它所做的一切。它的命名InvokeRequired是为了协调它需要用于什么......

于 2009-10-16T14:05:22.403 回答