难以理解c#方法描述

时间:2011-08-23 10:12:38

标签: c#

我正在研究Control.BeginInvoke方法,当它说:

时,我并没有明白这意味着什么
  

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

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

3 个答案:

答案 0 :(得分:6)

控件具有“线程关联性” - 意味着有一个需求它们只是直接操纵(甚至检查,除了一些创建它们的线程(通常称为UI线程)的特定属性,如InvokeRequired)。 句柄只是OS控件和.NET控件之间的抽象。

这实际上做的是在Windows消息循环上放置一条消息,由UI线程(拥有该控件)获取,从而导致在UI线程上调用您的委托。这意味着它可以与控件通信。如果您当前处于后台线程(可能是异步回调或BackgroundWorker),并且需要更新UI,则此功能非常有用。

答案 1 :(得分:1)

它表示窗口句柄 - 对象的内部非管理引用。

请参阅Contorl.Handle

  

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

  

Handle属性的值是Windows HWND。

答案 2 :(得分:1)

Windows窗体控件是在特定线程上创建的,并非设计用于多线程环境。 Microsoft制作它使控件只能从它创建的线程中进行操作,从而强制控件上的单线程环境。

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