2014-10-30 1 views
0

Пример:Когда содержание изменения язычка, как утилизировать старое содержимое автоматически

view = new viewOld(); 
view.Datacontext = new viewModelOld(); 
tabItem.Content = viewOld; 

Теперь я хочу, чтобы избавиться старое содержание, когда я изменить новое содержание вкладки:

tabItem.Content = viewNew; 

Как может i автоматически удаляет viewModelOld

ответ

0

TabItem не будет ссылаться на ваш старый вид, и если вы не держите никаких других ссылок на него, то GarbageCollector фрейма k удалит ваш старый вид из памяти.

Если ваше представление реализует IDisposable, то вы должны вызвать его метод Dispose явно, см. Dispose.

+0

Спасибо за ваши знания !!! Я использую Process Monitor для проверки памяти, и когда я перехожу от тяжелого контента к светлому содержимому, память все еще увеличивается !!! – Thinh

+1

Как говорит Мартин, «если вы не держите никаких других ссылок на него», так что дважды проверьте, что на вашу старую виртуальную машину не ссылаются нигде. Также GC не происходит, как только вы меняете эту виртуальную машину, поэтому не ожидайте мгновенного уменьшения памяти только потому, что вы переключили виртуальные машины. Вы можете заставить мгновенный GC, если хотите. – Mashton

+0

@Thinh: Он все еще может увеличиваться, GarbageCollector работает по своему расписанию. Ваша часть будет выполнена, как только вы отпустите все ссылки на нее (и вызывается Dispose на IDisposable). – Martin