Resharper Ultimate:2016.3.2 DotMemory:2016.3.2 Visual Studio 2017 Windows 7的 棱镜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获取快照是清除任何尚未从内核解析的内容。
我没有期待太多,但如果有任何想法可能会导致这一点,那么它会有所帮助。