我知道需要使用Invoke/BeginInvoke从工作线程调用对属于UI线程的组件进行更改的函数或过程……
我的问题是--有没有一个很好的理由去检查InvokeRequired?例如,在不同的情况下,可以从工作线程或从UI线程调用事件处理程序。让UI线程调用它自己最终要执行的方法调用会有什么后果吗?
比如说..。
Private Sub SomeProcedure() Handles event1, event2, event3
Me.Invoke(New delegateSomeProc(Address of SomeProc))
EndSub现在,假设event1从UI线程触发,但事件2和/或3从其他线程触发……event1调用invoke有什么危险吗,即使它不是必须的?是不是有点低效?
发布于 2011-09-01 20:21:11
让UI线程调用它自己最终要执行的方法调用会有什么后果吗?
据我所知,唯一的区别是,如果在创建控件的句柄之前调用Invoke,那么使用它将会失败。
这篇article更详细地讨论了这些问题。
发布于 2011-09-01 20:18:40
让UI线程调用它自己最终要执行的方法调用会有什么后果吗?
不,没有任何后果,除了可能的性能,如果不需要调用,直接方法调用将比通过调用基础结构更快。
https://stackoverflow.com/questions/7270077
复制相似问题