C# UWP 6.2.10 Windows 1903 - утечка памяти при использовании Frame.Navigate () - PullRequest
0 голосов
/ 23 апреля 2020

Я переписывал эту топи c много раз. Я искал вопросы о переполнении стека и форумах Microsoft. Проблема появилась на GitHub и других сайтах. Это было видно в течение 3 лет.

У меня есть простое приложение, главная страница которого - Navigation.xaml. С его помощью мы можем переходить на разные страницы, используя mainFrame.Navigate(typeof(MyPage));

Каждый раз, когда вы используете метод Navigate, создается новая страница. Но старые страницы никогда не удаляются.

Если мы добавим this.NavigationCacheMode = NavigationCacheMode.Enabled; к каждой из наших страниц; эта проблема исчезает, но появляются и многие другие. В связи с тем, что мы не сбрасываем страницу, все введенные данные, коллекции, таблицы и другие параметры остаются без изменений. Их сброс каждый раз требует серьезных изменений в реализации.

Некоторые рекомендуют GC.Collect(); после использования Navigate. Однако это тоже мало помогает.

Конечно, мы можем использовать Frame.GoBack();. Но это не помогает, когда, например, мы используем меню.

Вопрос прост: есть ли способ удалить все предыдущие страницы из памяти фрейма навигации? Заранее благодарю за помощь

Высокое потребление памяти при быстром открытии новых страниц

...