1

Resharper Ultimate:2016.3.2 DotMemory:2016.3.2 Visual Studio 2017 Windows 7 Prism 6.3.0 Ninject

这有点奇怪,所以我不确定如何描述它,但我会试一试。

最初,我设置了向其区域注册的页面,因此我的所有页面都声明如下

_kernel.Bind<IPageView, PageView>().To<PageView>();

然后将它们绑定到该区域。

_regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(PageView));

在更新内容时,我决定不再麻烦绑定页面并将它们注册到区域,而是切换到使用 RequestNavigate,因此我删除了向区域注册视图,并将绑定更改为

_kernel.RegisterTypeForNavigation<PageView>( PageNames.MyPage);

在调试模式下,这一切都很好。然而,这就是事情变得奇怪的地方。我运行 dotmemory 进行了一些泄漏测试,发现如果我在进入某些页面之前拍摄快照,软件就会崩溃。如果我没有拍摄快照,或者我在进入页面后拍摄了快照,则没有任何崩溃。

另外,如果我添加

_kernel.get<PageView>();

绑定页面后,我也没有问题。(所以现在这是我可怕的临时修复)

我只是想知道是否有人知道为什么会发生这种情况。我得出的唯一两个结论是

a) RequestNavigate 没有通过 ninject 正确解析。b) 不知何故,从 dotmemory 获取快照正在清除内核中尚未解决的任何内容。

我的期望并不高,但如果有人有任何想法可能导致这种情况,它会有所帮助。

4

0 回答 0