друзья. Разрабатываю масштабный проект на c# WinForms, столкнулся с проблемой утечки памяти. Проект имеет немалое количество UserControl, заметил при добавлении на форму данных контролов нагружается память, а вот после очистки базовой формы, память не очищается.
Примеры:
Один из модулей "Расписание", загружает необходимые UserControl'ы на экран. Память поднимается под 290к
После удаление данного модуля с экрана, память не меняется.
Пробовал удалять основной контрол с помощью:
this.RemoveAt()
this.Cntrols.Clear()
control.Dispose()
Не помогает и принудительная очистка:
GC.Collect();
GC.WaitForPendingFinalizers();
Также, почитав о данной проблеме, говорят, что необходимо сбрасывать ссылки на события. Каждый UserControl имеет небольшое количество событий, пример:
public event EventHandler entryClick = null;
public event EventHandler entryMouseEnter = null;
public event EventHandler entryMouseLeave = null;
private DataEntry entryData = null;
public AtlantControlEntry()
{
InitializeComponent();
this.Click += items_Click;
this.MouseEnter += items_mouseEnter;
this.MouseLeave += items_mouseLeave;
for (int i = 0; i < this.Controls.Count; i++)
{
this.Controls[i].Click += items_Click;
this.Controls[i].MouseEnter += items_mouseEnter;
this.Controls[i].MouseLeave += items_mouseLeave;
}
}
// Working with the form-action // ->
public void items_Click(object s, EventArgs e)
{
entryClick(s, e);
}
public void items_mouseEnter(object s, EventArgs e)
{
entryMouseEnter(s, e);
}
public void items_mouseLeave(object s, EventArgs e)
{
entryMouseLeave(s, e);
}
// Working with the form-action // <-
...
Но как их сбрасывать не имею понятия. Буду благодарен любой помощи, заранее спасибо.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь отправить письмо с помощью MailGun APIИмею следующий код:
Пробую создать dll библиотеку c RoslynДобавил все библиотеки с NuGet для работы с Roslyn