Утечка памяти в новом представлении C# UWP

С помощью этого кода я создаю новое представление:

CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();

        newViewId = ApplicationView.GetForCurrentView().Id;
    });
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);

Когда я закрываю это новое окно и снова запускаю код, и снова я закрываю это новое окно и снова открываю другое окно, использование памяти в окнах становится все больше и больше... так что я думаю, что все окна не закрыты, но просто спрятался на самом деле...

Итак, есть 2 способа, которыми я пытаюсь:

  1. Попробуйте на самом деле «убить» закрытое окно
  2. Попробуйте повторно показать скрытое окно и изменить его содержимое...

Я просто хочу, чтобы было только 2 окна, главное и это вновь созданное... Любое предложение о том, как это сделать?

Редактировать:

Вот как это выглядит, когда я использую этот пример https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MultipleViews

Это 3 скриншота с этим приложением.

Это потребление памяти при запуске приложения:

Это после того, как я добавил 4 вида:

И вот когда я открываю и закрываю каждый из них:

Итак, даже в их примере использование памяти растет...


person user3239349    schedule 15.03.2017    source источник


Ответы (1)


Когда вы закрываете окно, оно сохраняется в списке недавно использованных окон на случай, если оно понадобится снова. Если вы знаете, что он вам больше не понадобится (или хотите/нужно освободить память), вы можете закрыть его, вызвав Window.Current.Close(); после ApplicationView.Consolidated.

Описание этого есть в эта статья в блоге BuildingApps.
Также есть (довольно сложная IMO) пример в репозитории примеров UWP.

person Matt Lacey    schedule 15.03.2017
comment
Тем не менее, что бы я ни делал, использование памяти увеличивается каждый раз, когда я закрываю и открываю представление... - person user3239349; 21.03.2017