“WPF UserControl.Unloaded”选项卡更改与卸载

Posted

技术标签:

【中文标题】“WPF UserControl.Unloaded”选项卡更改与卸载【英文标题】:"WPF UserControl.Unloaded" tab change vs unload 【发布时间】:2013-07-16 09:18:31 【问题描述】:

我有一个 wpf 用户控件,它显示了一些创建/处置成本高昂的非托管资源。

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

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

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

【问题讨论】:

请注意以下关于 Unloaded 事件的备注:Note that the Unloaded event is not raised after an application begins shutting down. Application shutdown occurs when the condition defined by the ShutdownMode property occurs. If you place cleanup code within a handler for the Unloaded event, such as for a Window or a UserControl, it may not be called as expected. 如果我的应用程序关闭,我想释放的任何内存都会被释放,所以没什么大不了的。不过还是谢谢。 【参考方案1】:

Unloaded 事件是释放非托管资源的错误位置。http://msdn.microsoft.com/en-us/library/b1yfkh5e(v=vs.100).aspx 当您知道不再需要 UserControl 并想立即释放非托管资源时 - 调用 Dispose()

【讨论】:

以上是关于“WPF UserControl.Unloaded”选项卡更改与卸载的主要内容,如果未能解决你的问题,请参考以下文章