c# WinForms UserControl утечка памяти

159
31 января 2019, 09:40

друзья. Разрабатываю масштабный проект на 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 // <-
        ...

Но как их сбрасывать не имею понятия. Буду благодарен любой помощи, заранее спасибо.

READ ALSO
Как в WPF в Textbox обойти string.Empty?

Как в WPF в Textbox обойти string.Empty?

Есть некоторая форма (её часть):

161
Почему не отправляется письмо с помощью Mailgun APi?

Почему не отправляется письмо с помощью Mailgun APi?

Пытаюсь отправить письмо с помощью MailGun APIИмею следующий код:

214
Создание объекта по имени класса [дубликат]

Создание объекта по имени класса [дубликат]

На данный вопрос уже ответили:

165
Создание dll с Roslyn

Создание dll с Roslyn

Пробую создать dll библиотеку c RoslynДобавил все библиотеки с NuGet для работы с Roslyn

177