2013-07-16 179 views
3

我有一个wpf用户控件,显示一些非托管资源,这些资源创建/处理的开销很大。“WPF UserControl.Unloaded”选项卡更改与卸载

UnLoaded事件是释放非托管资源的理想事件,但由于某些控件创建/销毁可视化树,因此每个实例被称为多次。

我想要做的是以某种方式确定在UnLoaded事件中,控件是否仍然存在并且没有为它构建的可视化树。

这样,我可以防止释放/创建非托管资源,如果用户只是通过TabControl导航,或者可能情况下。

+1

也请注意,从上卸载的事件说明如下:'注意卸载在应用程序开始关闭后不会引发事件。当由ShutdownMode属性定义的条件发生时,会发生应用程序关闭。如果您将清理代码置于Unloaded事件的处理程序中,如Window或UserControl,则可能无法按预期方式调用它。“ – Clemens

+0

如果我的应用程序关闭,那么我想释放的任何内存都是免费的,所以没有biggy。不过谢谢。 –

回答