Можно ли вручную удалить страницы Silverlight 2.0 из коллекции (сборщик мусора)? - PullRequest
2 голосов
/ 01 декабря 2008

У меня есть несколько страниц на основе xaml, которые хранятся как дочерние элементы холста на другой странице. Я добавляю и удаляю дочерние страницы при запуске приложения. Однако страницы, которые удалены из дочерней коллекции, все еще работают и реагируют на сочетания клавиш. Как я могу заставить старые страницы быть полностью удалены?

1 Ответ

2 голосов
/ 01 декабря 2008

Когда у вас отображаются страницы XAML, вы регистрируетесь на события клавиатуры? Если да, то забыли ли вы отменить регистрацию в событиях клавиатуры при удалении этих страниц с экрана?

Поскольку в классе UserControl или Page в Silverlight (по крайней мере, из того, что я знаю) нет события, похожего на "Unloading", то мои страницы реализуют определенный мной интерфейс, который содержит один метод, подобный " Очистка "или" Закрыть ". Прежде чем удалить элемент управления с экрана, я вызываю функцию очистки () для элемента управления и заставляю его выполнять такие действия, как отмена регистрации в событиях, которые он мог зарегистрировать.

Если вы не отмените регистрацию по событиям, объект страницы никогда не будет собирать мусор, поскольку CLR считает, что объект все еще жив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...