我理解需要使用Invoke/BeginInvoke从工作线程调用到对属于UI线程的组件进行更改的函数或过程…
我的问题是-有一个很好的理由去检查invokerrequired吗?在不同的情况下,事件处理程序可以从工作线程调用,也可以从UI线程调用。是否有任何后果有UI线程调用调用一个方法,它将自己最终执行?
说…
Private Sub SomeProcedure() Handles event1, event2, event3
Me.Invoke(New delegateSomeProc(Address of SomeProc))
EndSub
现在,假设event1从UI线程触发,但Events 2和/or3从其他线程触发…无论如何,event1调用invoke是否有任何危险,即使它不必这样做?是不是效率太低了?
是否有任何后果有UI线程调用调用一个方法,它将自己最终执行?
我所知道的唯一区别是,如果在控件的句柄创建之前调用Invoke
,则会失败。
本文更详细地讨论了这些问题。
是否有任何后果有UI线程调用调用一个方法,它将自己最终执行?
不,没有任何后果,除了可能不需要调用的性能之外,直接方法调用将比通过invoke基础结构更快。