MVVM Light ToolkitベースのWindows WPFアプリケーションでINavigation
を実装しています。ページのライフサイクル
private Frame GetFrame()
{
return (Application.Current.MainWindow as Generator.MainWindow).MainFrame; ;
}
public void NavigateTo(string pageKey)
{
CurrentPageKey = pageKey;
var obj = Activator.CreateInstance(_keyPageTypeMapping[pageKey]);
GetFrame()?.Navigate(obj);
}
私は新しいページに移動すると、新しいページが作成され、表示されます。これは、NavigateToの実装です。しかし、離れて移動すると、古いページのデストラクタが呼び出されたことはありません。 10〜20回の航行の後でさえ私はそれを見ない。私はアプリケーションを終了した後、デクストラクタが呼び出されるのを見るだけです。質問は、古いページを処分する最良の方法は何ですか?
「廃棄」または_ファイナライザ_を意味しますか?あなたはそれを処分する必要がありますか?どのようなリソースは、その必要性を処理するために保持しているのですか? –
私はファイナライズを気にしないので、Disposeと思います。オブジェクトがどこかに保持されていないという兆候が必要なだけです。リソースは主にUIオブジェクトですが、メモリにスタックするとコストがかかる可能性があります。 – Pablo
あなたのフォームが管理されていないリソース、または 'IDisposable'を実装するマネージドリソースを使用していない限り、ガベージコレクタがその仕事をすることを信頼する以外に何もしません。それは、必要なときにオブジェクトをメモリから解放します。 –