Мне интересно, как правильно распоряжаться страницей в WinRT.
В моем page_loaded событии я подключаю несколько событий, таких как:
_navigationHelper.LoadState += navigationHelper_LoadState;
_navigationHelper.SaveState += navigationHelper_SaveState;
_button.Click += button_click;
Поскольку у меня нет экземпляра с моей страницы, я не могу распоряжаться им. Должен ли я отследить такие события?
Правильно ли, что, если деструктор называется всем, все утилизируется, и GC заботится обо всех ссылках?
Большое спасибо Дани
Если ваша страница не содержит ссылок на большие ресурсы, возможно, это будет просто просто позволить ей собрать мусор. В противном случае вы можете рассмотреть вопрос об освобождении тех, кто на Unloaded
события или OnNavigatedFrom()
переопределения. Сама страница не реализует IDisposable
, поэтому вы не можете ее утилизировать, и это скорее всего не то, что вы хотите, поскольку такой элемент управления, как Page
, не является тяжелым ресурсом.
В целом - сбор мусора заботится обо всех объектах, которые теряют путь к корню GC. Вам просто нужно убедиться, что вы не вызываете утечку, оставив такое соединение висящим (я бы сказал, что чаще всего не удалял статические обработчики событий). Чтобы освободить большие ресурсы, вы должны правильно реализовать IDisposable
интерфейс (посмотрите "IDisposable pattern").