如何在WPF的Prism库ScopedRegionManager中正确释放非托管资源?
Prism WPF应用ScopedRegion子视图导航资源泄漏问题及临时处理
问题背景
- 基于Prism框架开发WPF应用,在SpecView中使用
ScopedRegionManager管理各类子视图 - 部分子视图持有非托管资源,必须在导航离开时触发
Dispose方法完成清理 - 核心问题:导航离开包含ScopedRegion的SpecView时,持有非托管资源的子视图的
OnNavigatedFrom方法未被调用,导致视图无法感知已离开,非托管资源滞留内存引发泄漏
当前临时解决方案
在各层级ViewModel的OnNavigatedFrom方法中加入以下代码,手动触发导航逻辑以确保资源能被清理:
var parameter = new NavigationParameters(); ScopedRegionManager.RequestNavigate("AlgRegion", nameof(LeavingView), NavigationFinished, parameter);
内容的提问来源于stack exchange,提问作者wentao cheng
相关产品推荐
相关产品推荐

