为什么WPF不使用IDisposable,有什么后果?

时间:2012-05-14 12:57:36

标签: .net wpf idisposable

所以,我之前从未做过相当规模的WPF项目,但是这个让我感到疑惑; WPF课程没有实现IDisposable的原因是什么?相比之下,Windows窗体中的所有UI元素都实现了IDisposable,以确保它们摆脱了底层句柄等。

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

除了Close()之外,我还需要对WPF Window对象做些什么吗?

1 个答案:

答案 0 :(得分:18)

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

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