【发布时间】:2012-05-01 16:28:57
【问题描述】:
我有一个 Winforms 菜单项,单击该菜单项会显示 WPF 表单。 WPF 表单使用 Caliburn Micro,使用 Autofac 引导。
最近我突然想到 Caliburn 引导程序从根 Autofac 容器中解析依赖项。因此,这些依赖项(例如,具有 1000 个要绑定到网格的数据项的视图模型)永远不会被释放。
我想使用 Autofac 生命周期容器来管理处置,但是,我不确定如何使用 Caliburn 执行此操作。最初,我想为每个打开的 WPF 表单实例化一个 Caliburn 引导程序(带有自己的 Autofac 生命周期容器)。然后,当表单被释放时,引导程序可以被释放(以及生命周期容器)。
但是,从 Caliburn 源代码来看,似乎应该为整个应用程序只创建一个引导程序。这是因为实例化引导程序似乎会分配静态字段来处理 UI 编组(也许还有其他我可能没有看到的东西)。
对于关闭 WPF 表单时如何处理依赖项,是否有人有任何建议/建议?
【问题讨论】:
-
我问了一个关于城堡的类似问题。 stackoverflow.com/q/9583760/246811。目前还没有一个可行的答案。
-
在问我问题之前我确实看到了你的帖子。像你一样,我正在寻找一种不污染虚拟机的方法。此外,我不确定为什么在线上没有更多关于此的信息 - 使用 Caliburn 似乎是一个相当大的问题(至少对于 Autofac 和 Castle,它们是两个流行的 DI 框架)。
-
同意。存在生命周期问题的虚拟机污染是我无法忍受的。
标签: dispose autofac caliburn.micro