Я переписывал эту топи c много раз. Я искал вопросы о переполнении стека и форумах Microsoft. Проблема появилась на GitHub и других сайтах. Это было видно в течение 3 лет.
У меня есть простое приложение, главная страница которого - Navigation.xaml
. С его помощью мы можем переходить на разные страницы, используя mainFrame.Navigate(typeof(MyPage));
Каждый раз, когда вы используете метод Navigate
, создается новая страница. Но старые страницы никогда не удаляются.
Если мы добавим this.NavigationCacheMode = NavigationCacheMode.Enabled;
к каждой из наших страниц; эта проблема исчезает, но появляются и многие другие. В связи с тем, что мы не сбрасываем страницу, все введенные данные, коллекции, таблицы и другие параметры остаются без изменений. Их сброс каждый раз требует серьезных изменений в реализации.
Некоторые рекомендуют GC.Collect();
после использования Navigate
. Однако это тоже мало помогает.
Конечно, мы можем использовать Frame.GoBack();
. Но это не помогает, когда, например, мы используем меню.
Вопрос прост: есть ли способ удалить все предыдущие страницы из памяти фрейма навигации? Заранее благодарю за помощь
Высокое потребление памяти при быстром открытии новых страниц