У меня есть диалоговое окно C # WinForm, которое содержит настраиваемый элемент управления таблицей со строками и ячейками, которые также являются настраиваемыми элементами управления. После закрытия (не скрытия) этого диалога у меня возникает утечка памяти (и это подтверждается профилировщиком памяти .NET).
Из информации, которую я получаю от профилировщика, я думаю, что он связан с удалением этих элементов управления, но я не уверен, как это исправить.
В элементе управления таблицей у меня есть список строк:
private readonly List<CustomRow> _rows = new List<CustomRow>();
В каждой строке у меня есть список ячеек:
List<CustomCell> _cells = new List<CustomCell>();
К настоящему времени удаление элементов управления было выполнено автоматически сгенерированным кодом в Designer.cs:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Но теперь я думаю, нужно ли мне перенести код утилизации в файл .cs и добавить что-то подобное, например, для таблицы:
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
// dispose each row here
}
base.Dispose(disposing);
}
Или это происходит автоматически и причина утечки памяти другая? (Что это может быть?)
Show
, а неShowDialog
, когда показываете свой - хм, диалог? А методDispose
называется? - person Ivan Stoev   schedule 26.12.2015