我已经创建了一个定制的WPF用户控件,打算由第三方使用.我的控件有一个可丢弃的私有成员,我希望确保在包含窗口/应用程序关闭后始终调用其dispose方法.然而,UserControl不是一次性的.
我try 实现IDisposable接口并订阅卸载的事件,但在主机应用程序关闭时两者都没有被调用.MSDN表示,卸载的事件可能根本不会引发.它也可能会被多次触发,也就是当用户更改主题时.
如果可能的话,我不想依赖我控制的消费者记住调用特定的Dispose方法.
public partial class MyWpfControl : UserControl
{
SomeDisposableObject x;
// where does this code go?
void Somewhere()
{
if (x != null)
{
x.Dispose();
x = null;
}
}
}
到目前为止,我找到的唯一解决方案是订阅Dispatcher的ShutdowStart事件.这是合理的做法吗?
this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;