gpt4 book ai didi

c# - 不考虑 InvokeRequired 调用 Invoke 有什么问题?

转载 作者:IT王子 更新时间:2023-10-29 04:00:11 29 4
gpt4 key购买 nike

我见过跨线程访问 GUI 控件的常见设置,例如此处讨论的: Shortest way to write a thread-safe access method to a windows forms control

我发现的所有网络点击都描述了类似的事情。

但是,为什么我们需要检查InvokeRequired?我们不能直接调用 Invoke 吗?

我认为答案是否定的,所以我真正的问题是“为什么”?

最佳答案

从非 UI 线程我们无法触及 UI - 可能会发生非常糟糕的事情,因为控件具有线程关联性。因此,我们必须(至少)从非 UI 线程调用 InvokeBeginInvoke

然而,对于 UI 线程 - 我们不想多次调用 Invoke;问题是,如果您已经在 UI 线程上,它仍然会产生不必要的开销,即向表单的泵发送消息并进行处理。

实际上,在您知道的大多数线程代码中,您希望在-UI 线程上调用特定方法,因此在这些情况下,没有额外的方法开销:只需调用 Invoke

关于c# - 不考虑 InvokeRequired 调用 Invoke 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com