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>();
ページをバインドした後も問題はありません。(だから今、これは私のひどい一時的な修正です)
なぜこれが起こっているのか、誰かが何か知っているかどうか疑問に思っています。私が思いついた唯一の2つの結論は、
a) RequestNavigate が ninject を介して正しく解決されていません。b) どういうわけか、ドットメモリからスナップショットを取得すると、カーネルからまだ解決されていないものがすべてクリアされます。
私はあまり期待していませんが、誰かがこれを引き起こしている可能性のあるアイデアを持っていれば、かなり役に立ちます.