窗口句柄

要创建一个控件,并且让这个控件加到parent container里面的时候,他的句柄才算创建,否则老是用线程等待是不会成功的。

现象:在启动一个线程线程任务是否及时办理的线程中,往控件写信息的时候老是出现错误。

 

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

 

错误发生在这句代码上:

 

gridControl1.BeginInvoke(dd, list);

 

后来采用让线程等待主界面加载完毕的时候执行,还是报同样的错误。这时候发现时句柄根本没有创建好。那么我何不在确定已经创建完UI的各个句柄后在启动线程呢?于是我移动了代码,让他靠后执行,郁闷还是不行。然后发现,这个UC控件 new出来之后没有属于任何一个父窗体,他飘在哪里,这样句柄就没有创建出来,于是修改代码,顺利通过。
让我们来复习一下,句柄是什么?
句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。
这时百度百科里面的介绍,基本概念都一样,看我们如何理解,理解是否到位。
句柄的作用是什么,什么时候创建,何时销毁?
句柄到底是如何表示的?

Linux中也是类似的概念吗?Linux是如何表示的?

 

顺便熟悉一下:跨线程访问控件是如何实现的。Invoke内部是在怎么走的?

必须是用修改的控件来Invoke吗?

先放出来,督促自己来完善笔记。

你可能感兴趣的:(C#,windowform)