gelöst VB.NET Controls löschen mit clear bring Speicherüberlauf

Mitglied: sdidi

sdidi (Level 1) - Jetzt verbinden

2020/09/28, aktualisiert 13:30 Uhr, 208 Aufrufe, 4 Kommentare

Hallo Leute,

in meinem Projekt, einer Projektplanersoftware, stelle ich in einem Flowlayoutpanel die Projekte eines Tages jeweils mit einem UserControll da, welches ich zur Laufzeit mit

aufliste.

Wechsel ich auf den nächsten Tag, werden die alten Einträge per

gelöscht, anschließend neu geladen wie oben beschrieben.
Funktioniert super und schnell.

Nach dem 23. mal laden kommt es aber zu einer Exception, wenn ich das richtig analysiert habe, liegt es daran, das die Objekte aus dem Flowlayoupanel zwar entfernt, im Speicher aber nicht gelöscht werden.

Wenn ich jedes Objekt über eine Schleife aus dem Flowlayoutpanel einzeln lösche, kommt die Exception nicht mehr. Dafür dauert es natürlich irre lange.

Kennt jemand dieses Problem? Gibt es da eine Lösung für?

Vielen Dank ... Söhnke
Mitglied: emeriks
2020/09/28 um 13:33 Uhr
Hi,
zwei Ansätze:
  1. Nach dem Clear explizit die Garbage Collection ausführen.
  2. vor dem Clear startest Du für jedes "Ober-Control" einen eigenen Threat, in welchen Du die jeweiligen "Unter-Controls" explizit leerst.

GC.Collect

E.
Bitte warten ..
Mitglied: 145916
LÖSUNG 2020/09/28, aktualisiert um 18:55 Uhr
Das manuelle Auslösen der Garbage-Collection kann man machen, ist aber very bad practice. Besser wäre es deine Controls mit der IDisposable Schnittstelle auszustatten und die Controls explizit mit Dispose freizugeben, dann passiert das auch nicht da. Noch besser wäre es dafür stattdessen ein WPF zu erstellen und die Termine als Datenquelle über eine Klassen einem Data-Control zur Verfügung zu stellen und statt selbst Controls hinzuzufügen und zu löschen dann nur noch die Objekte dem Klassen-Objekt hinzuzufügen und zu löschen, für die Darstellung sorgt dann WPF bzw. du durch dein Template. Data binding overview in WPF
Bitte warten ..
Mitglied: mbehrens
LÖSUNG 2020/09/28 um 18:46 Uhr
Zitat von sdidi:

in meinem Projekt, einer Projektplanersoftware, stelle ich in einem Flowlayoutpanel die Projekte eines Tages jeweils mit einem UserControll da, welches ich zur Laufzeit mit

aufliste.

Wechsel ich auf den nächsten Tag, werden die alten Einträge per

gelöscht, anschließend neu geladen wie oben beschrieben.
Funktioniert super und schnell.

Nach dem 23. mal laden kommt es aber zu einer Exception, wenn ich das richtig analysiert habe, liegt es daran, das die Objekte aus dem Flowlayoupanel zwar entfernt, im Speicher aber nicht gelöscht werden.

Wenn ich jedes Objekt über eine Schleife aus dem Flowlayoutpanel einzeln lösche, kommt die Exception nicht mehr. Dafür dauert es natürlich irre lange.

Kennt jemand dieses Problem? Gibt es da eine Lösung für?

Das ist genau so dokumentiert:

Calling the Clear method does not remove control handles from memory. You must explicitly call the Dispose method to avoid memory leaks.

Es wäre sicherlich besser, mit einer geeigneten Schleife über die Controls zu iterieren und die Methode Dispose zu verwenden.
Bitte warten ..
Mitglied: sdidi
2020/09/28 um 22:44 Uhr
Vielen Dank für die Antwort, das hat meine Lösung bestätigt.....
Bitte warten ..
Heiß diskutierte Inhalte
Windows Server
Hyper-V Server vs Datacenter?
holliknolliFrageWindows Server26 Kommentare

Hallo, hat jemand Erfahrung mit dem - kostenlosen - Hyper-V-Server? Ich meine, warum teure Lizenzen für Datacenter zahlen, wenn ...

LAN, WAN, Wireless
Spanning Tree Probleme
gelöst predator66FrageLAN, WAN, Wireless12 Kommentare

Hallo, wir haben hier eigenartige Spanningtree Probleme, die wir zur Zeit nicht gelöst bekommen: New Root Port MAC ist ...

Exchange Server
Zustellbestätigung deaktivieren
defiant01FrageExchange Server10 Kommentare

Hallo, ich stehe vor der Aufgabe bei einem Postfach die Zustellbestätigung für eingehende Mails zu deaktivieren. Der User geht ...

Notebook & Zubehör
Business Support HP, Dell, Lenovo etc
fuzzyLogicFrageNotebook & Zubehör10 Kommentare

Moin, ich arbeite derzeit fast ausschließlich mit HP und frage mich wie es auf Support Baustelle bei anderen Herstellern ...

E-Mail
Ticketsystem mit mailflow
CraftdorFrageE-Mail8 Kommentare

Hallo, Ich bin auf der Suche nach einem Ticketsystem das am besten Freeware ist und einfach nur eine Ankommende ...

Netzwerkgrundlagen
PfSense Virtuele IP mit NAT auf eine IP im VLAN90 zum VLAN30
OIOOIOOIOIIOOOIIOIIOIOOOFrageNetzwerkgrundlagen8 Kommentare

Guten Tag, ich stehe hier mit einer neuen Herausforderung. Hab ein Internetradio, welches jedoch nur mit eine App gesteuert ...

Ähnliche Inhalte
Visual Studio
VB.Net - Label-Control skalieren
gelöst emeriksFrageVisual Studio8 Kommentare

Hi, kann man im Visual Studion ein Label-Control skalieren? Bsp.: Ich habe eine verfügbare Fläche, welches vollständig durch ein ...

Datenbanken
Crystal Clear Reports VERSION 6
ZZaaiiggaaFrageDatenbanken1 Kommentar

Hallo zusammen, ich benutze normalerweise den I-Net Designer für Crystal Clear reports. Nun muss ich einen alten Report verändern. ...

Visual Studio
Vb.net dynamische Logik
theoberlinFrageVisual Studio6 Kommentare

Hallo zusammen, In der Hoffnung hier tummeln sich auch vb.net programmierer würde ich euch gern eine Frage stellen: Ich ...

Visual Studio
VB.Net asynchrone Clientssockets
Phreak87FrageVisual Studio3 Kommentare

Hallo, ich möchte mir einen WebSocket-Client bauen und habe dabei folgendes Problem: Wenn die Verbindung zum Server aufgebaut wurde ...

Visual Studio
VB.Net - Hilfe bei Regex
gelöst emeriksFrageVisual Studio8 Kommentare

Hi, vorne weg: Ich weiß, im Web gibt's zig Beispiele. Ich habe heute auch schon gesucht, aber abgebrochen, weil ...

Microsoft
PROBLEM: Navision 2009 OLE Control
gelöst cody1900FrageMicrosoft3 Kommentare

Hallo Zusammen, wir verwenden MS Navision in der Version 2009. Seit heute taucht bei uns ein Fehler auf (siehe ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT