延迟创建Windows句柄



这篇文章建议。net延迟创建窗口句柄,但我找不到任何MSDN参考等来支持这一点。有人能告诉我更多的信息吗?

为了提高性能,.NET推迟了real的创建尽量使用Win32操作系统

是的,除非绝对必要,否则不会创建本机窗口。当你将Form的Visible属性设置为true或调用它的Show方法(同样的事情)时,通常会发生这种情况。或者如果在构造函数中使用要求Handle属性有效的属性。这种情况很少见,而且可能会有点麻烦。Winforms类都存储你分配的属性值(或设计器生成的代码分配的),直到创建本机窗口才实际应用它们。

优化通常是轻微的,但它可以在某些控件上产生很大的差异。很好的例子是TreeView和ListView,如果你在构造函数中给它们很多item。延迟的初始化将通过批量初始化消息获得底层本机Windows控件。而不是为你添加的每一项添加一条信息。还要注意,在表单的Load事件处理程序中添加项的常见做法会破坏这种优化。

控件的文档中。处理:

Handle属性的值是Windows HWND。如果句柄尚未创建,引用此属性将强制创建句柄。

这并没有明确地说句柄的创建被延迟,但这是非常强烈的暗示。

最新更新