2016-05-02 2 views
2

Я реализую INavigation в моем приложении WPF на основе MVVM Light Toolkit. Это реализация NavigateTo:Жизненный цикл страницы

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); 
} 

Когда я перейти на новую страницу, новая страница создается и отображается. Однако, когда я перемещаюсь, я не вижу, что деструктор старой страницы был вызван. Даже после 10-20 навигаций я этого не вижу. Я вижу, что дескриптор вызывается после выхода из приложения. Вопрос в том, как лучше всего распоряжаться старой страницей?

+1

Вы имеете в виду 'Dispose' или _finalizer_? Вы отказались от этого? какими ресурсами является страница, на которой нужно распоряжаться? –

+0

Я полагаю, Dispose, потому что я не забочусь о завершении. Просто нужно заметить, что объекты где-то не сохранились. Ресурсы - это объекты пользовательского интерфейса в основном, но при укладке в память могут быть дорогостоящими. – Pablo

+0

Если ваша форма не использовала неуправляемые ресурсы или управляемые ресурсы, которые реализуют «IDisposable», вам нечего делать, кроме как доверять сборщику мусора для выполнения своей работы. Он освобождает объекты из памяти _, когда ему нужно to_. –

ответ

0

Что вы делаете, должно быть хорошо. Если сборщик мусора не удалил страницы, то пока не нужно было этого делать. Если вы беспокоитесь о том, могут ли эти старые страницы быть собраны мусором, или если вы просто хотите заставить сборку произойти. Попробуйте явно вызвать сборщик мусора с:

GC.Collect(); 
+0

'GC.Collect()' не заставлял объект уничтожаться. У меня есть предположение, что эти объекты на самом деле не удалены из-за навигационной экосистемы. В верхней части окна появляется навигационная система в стиле IE7 с поддержкой back/forw. кнопок. Возможно, они нуждаются в живых? Создание так много новых объектов без единого знака меня беспокоит ... – Pablo