Я создаю простой тестовый проект WPF, который содержит несколько UserControls (Insteda of Pages). Я использую класс Switcher для навигации между различными UserControls.Когда я перехожу на разные страницы, я заметил, что память продолжается при увеличении на каждой UserControle Navigation и GC не вызывается.Приложение WPF с несколькими пользовательскими элементами управления
1.So am i doing something wrong in following code?
2.Which part of the code consuming more memory?
3.Do i need to invoke GC for disposing my UserControls on each new UserControle creation?
If need how can i invoke GC?
public void On_Navigate_Click()
{
UserControle newusercontrole=new UserControle();
DataSet ds = new DataSet();
ds=con.getSome_Datafrom_SQL();//Gets data from SQL via connection class
dataGrid_test.ItemsSource = ds.Tables[0].DefaultView;
Grid.SetColumn(newusercontrole, 1);//dataGrid_test is inside newusercontrole and following is the code to add "this" usercontrol to the main window.
Grid.SetRow(newusercontrole, 1);
Grid.SetZIndex(newusercontrole, 10);
Container.Children.Add(newusercontrole);
}
Вы создаете новый usercontrol и помещаете его в детскую коллекцию каждый раз, когда нажимается кнопка. Как предыдущий UC удален из коллекции детей? Если есть еще ссылка на prev. UC, GC не собираются. – keft
Да, теперь я изменил свой код. Перед добавлением нового UserControl am, удаляющего предыдущий UC, как показано ниже. Container.Children.Remove (oldusercontrole); Все еще их много утечки памяти. – ManjuVijayan
Container.Children.Remove (oldusercontrole); его рабочий .. спасибо .. – ManjuVijayan