Saya memiliki dialog C# WinForm yang berisi kontrol tabel khusus dengan baris dan sel yang semuanya juga merupakan kontrol khusus. Setelah menutup (tidak menyembunyikan) dialog ini saya mengalami kebocoran memori (dan ini dikonfirmasi oleh profiler memori .NET).
Dari informasi yang saya dapatkan dari profiler, saya pikir ini berkaitan dengan pembuangan kontrol ini tetapi saya tidak yakin bagaimana cara memperbaikinya.
Dalam kontrol tabel saya memiliki daftar baris:
private readonly List<CustomRow> _rows = new List<CustomRow>();
Di setiap baris saya memiliki daftar sel:
List<CustomCell> _cells = new List<CustomCell>();
Saat ini pembuangan kontrol dilakukan dengan kode yang dibuat secara otomatis di designer.cs:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Tapi sekarang saya berpikir apakah saya perlu memindahkan kode pembuangan ke file .cs dan menambahkan sesuatu seperti itu, misalnya untuk tabel:
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
// dispose each row here
}
base.Dispose(disposing);
}
Atau ini dilakukan secara otomatis dan alasan kebocoran memori berbeda? (Apa itu?)
Show
dan bukanShowDialog
saat menampilkan dialog - hm? Dan metodeDispose
dipanggil? - person Ivan Stoev   schedule 26.12.2015