难以理解c#方法描述

本文关键字:方法 描述 | 更新日期: 2023-09-27 18:06:20

我在看Control.BeginInvoke方法,我不太明白它的意思,当它说:

在控件所在的线程上异步执行委托底层句柄创建于。

control's underlying handle是什么?它是做什么的?

难以理解c#方法描述

控件具有"线程亲和性" -这意味着有需求它们只能由创建它们的线程(通常称为UI线程)直接操作(甚至检查,除了少数特定的属性,如InvokeRequired)。句柄只是操作系统控件和。net控件之间的抽象。

这实际上是在windows消息循环中放置一个消息,该消息由UI线程(拥有控件)拾取,导致您的委托在UI线程上被调用。这意味着它可以与控件对话。这是有用的,如果你目前在后台线程(可能是一个异步回调或BackgroundWorker),需要更新UI。

表示窗口句柄——控件的内部非托管引用。

参见Contorl.Handle:

获取控件绑定到的窗口句柄。

:

Handle属性的值是Windows HWND。

Windows窗体控件是在特定线程上创建的,并不是为在多线程环境中使用而设计的。微软这样做是为了使控件只能从创建它的线程中操作,从而在控件上强制使用单线程环境。

控件上的

BeginInvoke调用该线程上提供给它的代码。