如果在将要处理的Windows窗体中使用WPF用户控件是否将被处置?

时间:2016-09-16 01:30:08

标签: c# wpf winforms user-controls dispose

我只是learned我们可以使用UserControl控件将WPF Form置于窗口ElementHost。如果处理了窗体控件,那么WPF用户控件也会被处理掉吗?

1 个答案:

答案 0 :(得分:2)

如果您的WPF UserControlIDisposable,则答案为是,否则为否。

在托管WPF Dispose的{​​{3}}类的UserControl方法的源代码中,您可以看到:

IDisposable child = this.Child as IDisposable;
if (child != null)
{
    child.Dispose();
}

这意味着Child将被处置,如果它是IDisposable

注意

WPF不依赖IDisposable接口进行资源清理。但由于UserControl将在支持ElementHost模式的IDisposable控件中的Windows窗体项目中使用,因此如果需要执行某些资源,则可以依赖IDisposable模式清理。但如果它是一个WPF项目,你应该使用WPF机制进行资源清理。