1

我了解需要使用 Invoke/BeginInvoke 从工作线程调用函数或过程,这些函数或过程会更改属于 UI 线程的组件...

我的问题是 - 是否有充分的理由去检查 InvokeRequired?假设在不同情况下可以从工作线程或 UI 线程调用事件处理程序。让 UI 线程调用它自己最终会执行的方法上的 Invoke 是否有任何后果?

说...

Private Sub SomeProcedure() Handles event1, event2, event3
  Me.Invoke(New delegateSomeProc(Address of SomeProc))
EndSub

现在,假设 event1 从 UI 线程触发,但事件 2 和/或 3 从其他线程触发......无论如何, event1 调用调用是否有任何危险,即使它不必这样做?是不是效率有点低?

4

2 回答 2

2

让 UI 线程调用它自己最终会执行的方法上的 Invoke 是否有任何后果?

不,没有任何后果,除了可能不需要调用的性能之外,直接方法调用将比通过 Invoke 基础结构更快。

于 2011-09-01T12:18:40.293 回答
2

让 UI 线程调用它自己最终会执行的方法上的 Invoke 是否有任何后果?

我知道的唯一区别是,Invoke如果在创建控件句柄之前调用 using 将失败。

本文更详细地讨论了这些问题。

于 2011-09-01T12:21:11.063 回答