Size: a a a

2020 September 23

A

Alex_R in CODE BLOG / C#
Sergey Benzenko
Ну а если попробовать без формы захардкодить новый Credential и по кнопке его добавить?
Попробовал, такая же история. У меня на изменение List<Person> завязано событие изменения списка. Когда я добавляю в Person new Creditinal это событие срабатывает и для каждого Creditinal рисует Panel с контролами для отображения информации о Creditinal на основной форме.

Person selectedPerson = _persons[listBoxListCreditinal.SelectedIndex];
               for (int i = 0; i < selectedPerson.Creditinals.Count; i ++)
               {
                   ICreditinalPanel panel = null;
                   panel = new PanelOfficial(selectedPerson, i); //// Вот здесь берёт 8 МБ памяти, а  selectedPerson.Creditinals.Count = 13. 13*8 = 104МБ
                   panel.ShowPerson();
                   flowLayoutPanel1.Controls.Add((Panel)panel);
}
источник

A

Alex_R in CODE BLOG / C#
Вот здесь берёт 8 МБ памяти, а  selectedPerson.Creditinals.Count = 13. 13*8 = 104МБ
источник

SB

Sergey Benzenko in CODE BLOG / C#
Alex_R
Попробовал, такая же история. У меня на изменение List<Person> завязано событие изменения списка. Когда я добавляю в Person new Creditinal это событие срабатывает и для каждого Creditinal рисует Panel с контролами для отображения информации о Creditinal на основной форме.

Person selectedPerson = _persons[listBoxListCreditinal.SelectedIndex];
               for (int i = 0; i < selectedPerson.Creditinals.Count; i ++)
               {
                   ICreditinalPanel panel = null;
                   panel = new PanelOfficial(selectedPerson, i); //// Вот здесь берёт 8 МБ памяти, а  selectedPerson.Creditinals.Count = 13. 13*8 = 104МБ
                   panel.ShowPerson();
                   flowLayoutPanel1.Controls.Add((Panel)panel);
}
Блин, так с этого и надо было начинать
источник

A

Alex_R in CODE BLOG / C#
Какого чёрта ICreditinalPanel panel = null; не помогает в освобождени памяти)
источник

A

Alex_R in CODE BLOG / C#
Sergey Benzenko
Блин, так с этого и надо было начинать
Так вот да)))
источник

P

Phantom in CODE BLOG / C#
Alex_R
Какого чёрта ICreditinalPanel panel = null; не помогает в освобождени памяти)
Если ссылку никто не держит, то gc еще не собрал
источник

P

Phantom in CODE BLOG / C#
Я хз поможет или нет, но можно попробовать Dispose
источник

HJ

Happy Jupiter in CODE BLOG / C#
Alex_R
Какого чёрта ICreditinalPanel panel = null; не помогает в освобождени памяти)
Ну все логично
источник

HJ

Happy Jupiter in CODE BLOG / C#
Гц же не подобрал ещё, какое ему дело до твоего нулла
источник

A

Alex_R in CODE BLOG / C#
class PanelOfficial: Panel, ICreditinalPanel
источник

A

Alex_R in CODE BLOG / C#
Как диспознуть Panel)
источник

A

Alex_R in CODE BLOG / C#
Как заставить подобрать, а то бесит меня))
источник

A

Alex_R in CODE BLOG / C#
а вот flowLayoutPanel1 эта дрянь может держать? Хотя я делаю flowLayoutPanel1.Controls.Clear();
источник

НП

Никита Петроченко... in CODE BLOG / C#
Alex_R
Какого чёрта ICreditinalPanel panel = null; не помогает в освобождени памяти)
Такая конструкция не гарантирует, что объект будет очищен GC
источник

HJ

Happy Jupiter in CODE BLOG / C#
Alex_R
Как заставить подобрать, а то бесит меня))
Ну можно вызвать GC.Collect()
источник

HJ

Happy Jupiter in CODE BLOG / C#
Вызывает дополнительный проход гц, что и нужно в твоём случае
источник

НП

Никита Петроченко... in CODE BLOG / C#
Happy Jupiter
Вызывает дополнительный проход гц, что и нужно в твоём случае
А вот не факт )
источник

HJ

Happy Jupiter in CODE BLOG / C#
Никита Петроченко
А вот не факт )
Да
источник

HJ

Happy Jupiter in CODE BLOG / C#
Этого никто не гарантирует
источник

A

Alex_R in CODE BLOG / C#
Happy Jupiter
Ну можно вызвать GC.Collect()
не лечит
источник