WinRt: избавиться от страницы

1

Мне интересно, как правильно распоряжаться страницей в WinRT.

В моем page_loaded событии я подключаю несколько событий, таких как:

_navigationHelper.LoadState += navigationHelper_LoadState;
_navigationHelper.SaveState += navigationHelper_SaveState;
_button.Click += button_click;

Поскольку у меня нет экземпляра с моей страницы, я не могу распоряжаться им. Должен ли я отследить такие события?

Правильно ли, что, если деструктор называется всем, все утилизируется, и GC заботится обо всех ссылках?

Большое спасибо Дани

Теги:
windows-store-apps
idisposable
windows-runtime
winrt-xaml

1 ответ

2
Лучший ответ

Если ваша страница не содержит ссылок на большие ресурсы, возможно, это будет просто просто позволить ей собрать мусор. В противном случае вы можете рассмотреть вопрос об освобождении тех, кто на Unloaded события или OnNavigatedFrom() переопределения. Сама страница не реализует IDisposable, поэтому вы не можете ее утилизировать, и это скорее всего не то, что вы хотите, поскольку такой элемент управления, как Page, не является тяжелым ресурсом.

В целом - сбор мусора заботится обо всех объектах, которые теряют путь к корню GC. Вам просто нужно убедиться, что вы не вызываете утечку, оставив такое соединение висящим (я бы сказал, что чаще всего не удалял статические обработчики событий). Чтобы освободить большие ресурсы, вы должны правильно реализовать IDisposable интерфейс (посмотрите "IDisposable pattern").

  • 0
    Спасибо, поэтому человек может сказать, что если деструктор был вызван, утечки нет?
  • 0
    На самом деле - обычно вы вообще не вызываете и не внедряете деструктор. В противном случае - это не так просто. Многие вещи могут просочиться, и тот факт, что ваша страница была GC, не означает, что все ресурсы, которые она использовала, так как некоторые из этих ресурсов могут не управляться (GC). Некоторые из них могут быть большими и должны быть удалены перед переходом на другую страницу, чтобы оставить место для новых ресурсов.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню