在WPF自定义控件中处理托管资源

3

我正在为第三方库编写一些WPF自定义控件。例如,我通过添加一些依赖属性来增强了标准的ComboBox。主要问题是,我的控件作为私有实例具有一些IDisposable对象,我想要处理这些对象的释放。

我的控件结构类似于:

public class MyComboBox : ComboBox

{

private IDisposableObject _innerObject;   
[..]

} 

如何确保控件被垃圾回收时对象已被清除,最佳方法是什么?

谢谢。

P.S.: 我尝试使用Finalizer方法,但我认为这不是一个干净和好的解决方案,并且使用控件的Unloaded事件(当主题更改时也会引发此事件)。

1个回答

0

让你的MyComboBox实现IDisposable接口,在dispose方法中处理其他对象的释放。当你使用完你的组合框后,调用dispose方法。

public class MyComboBox : ComboBox, IDisposable 
{ 

    private IDisposableObject _innerObject;    
    [..] 

    public void  Dispose()
    {
        _innerObject.Dispose();
    }
}

1
嗨,感谢您的回答。问题是ComboBox属于控件库,通常仅在XAML代码中使用。因此Dispose方法不会被调用。 - user1070316

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接