1

所以,我以前从来没有做过一个大型的 WPF 项目,但是这个让我想知道;WPF 类没有实现是IDisposable怎么回事?相比之下,Windows 窗体中的所有 UI 元素都实现了IDisposable,以确保它们摆脱底层句柄等。

我认为相同的 Windows 对象在那里隐藏,并且必须释放这些资源;那么,WPF 是如何做到的呢?

除了对它们进行处理之外,我还需要对我的 WPF Window 对象做些什么Close()吗?

4

1 回答 1

18

WinForms 控件具有句柄,因为它们是 Win32 控件的包装器。WPF 控件不是(好吧,windows 是,但它们托管的控件不是)。原因在于,WPF 窗口毕竟只是一个 Direct3D 渲染上下文,所有控件都只是一堆三角形。因此,它们不需要实际注册到操作系统,因此,它们没有句柄(除了 windows 和任何继承自的东西HwndHost,当然,它们Win32 对象)。

这就是 WPF 和 WinForms 之间存在如此大的互操作层的原因:WPF 控件根本不是 Windows 对象。

于 2012-05-14T12:59:34.200 回答