dotnet/winforms

DataGridView not dispose old elements

Open

#6.859 geöffnet am 17. März 2022

Auf GitHub ansehen
 (11 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (922 Forks)batch import
area-controls-DataGridViewhelp wantedtenet-performance

Repository-Metriken

Stars
 (4.100 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 14T 22h) (56 gemergte PRs in 30 T)

Beschreibung

  • .NET Core Version: all up to 7.0 p2

  • Have you experienced this same bug with .NET Framework?: Yes

Problem description: As I mentioned in https://github.com/dotnet/winforms/issues/6858 DataGridView not dispose old data on DataSource change. This is lead to 2 problems:

  1. All this stuff are going to finalization query because we have unnecessary finalizer here #6858.
  2. If we have a ContextMenuStrip bound to Cell/Column/Row we will have a memory leak. DataGridView with 3 columns and ContextMenuStrip bound to 1000 rows, result of DS refresh: image

Expected behavior: Old data must be property disposed. Probably in DataGridView.RefreshColumnsAndRows() (in DataGridView.Methods.cs)

Minimal repro: DataGridViewLeak.zip

Contributor Guide