我应该在Invoke()之前检查InvokeRequired吗?

时间:2019-03-01 11:09:59

标签: c# .net multithreading winforms

在编写将要从应用程序的不同部分使用的代码时,有时我的代码可能会在UI线程上执行,也可能不会。我想避免从另一个线程(已经在主线程上)在主线程上调用的开销。简单的方法是先检查InvokeRequired。但这真的需要吗?我希望系统能够避免Invoke本身的开销。

我可以直接调用Invoke吗,系统会在不需要时避免“调用”吗?

1 个答案:

答案 0 :(得分:0)

根据Hans Passant in a comment,调用 的代码足够智能,不会在主线程上执行时“调用”。参见source code(由Hans提供的链接)。

这是该链接的引文:

  

如果我们在同一线程上,我们不想等待,否则我们会   僵局。