Mat*_*ttH 38 c# user-interface invoke event-handling invokerequired
我已经看到了交叉线程访问GUI控件的常见设置,如下所述: 将线程安全访问方法写入Windows窗体控件的最短方法
我发现的所有网络点击描述了类似的事情.
但是,为什么我们需要检查InvokeRequired?我们不能直接调用Invoke吗?
我认为答案是否定的,所以我真正的问题是'为什么'?
Mar*_*ell 30
从非UI线程我们无法触及UI - 非常糟糕的事情可能发生,因为控件具有线程亲和力.因此,从非UI线程,我们必须(在最低限度)调用Invoke或BeginInvoke.
对于UI线程,但是-我们不希望调用Invoke大量的时间; 问题是,如果你是已经在UI线程上,它仍然有将消息发送到窗体的泵和处理它的不必要的开销.
实际上,在大多数线程代码中,您知道您希望在非 UUI线程上调用特定方法,因此在这些情况下,没有额外的开销:只需调用Invoke.
| 归档时间: |
|
| 查看次数: |
6787 次 |
| 最近记录: |