So... habs jetzt rausgefunden.
Ich muss auf dem Panel ein Clear() machen und kann es dann wieder mit neuem Inhalt füllen.
Aber weiss jemand, warum der Inhalt des Panels nach dem Clear() nicht Garbage Collected wird? Ich habe den Destructor der TextBox überschrieben und gebe es in der Konsole aus, wenn er aufgerufen wird.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ContentPanel.Children.Clear(); ContentPanel.Children.Add(new OTextBox()); ContentPanel.Children.Clear(); ContentPanel.Children.Add(new OTextBox()); ContentPanel.Children.Clear(); Console.WriteLine(GC.GetTotalMemory(false)); GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine(GC.GetTotalMemory(false)); Console.WriteLine("*********************"); |
Hier wird beim Aufruf des GC nicht aufgeräumt. Erst, wenn ich die Applikation schliesse. Dann werden die 4 Instanzen von OTextBox aufgeräumt (2 Initial und 2 füge ich in der Methode hinzu und entferne sie wieder).
Dies gefällt mir nicht so ganz, denn wenn ich dies dynamisch und oft mache, habe ich ein Memoryleak. Muss ich das irgendwie anders machen?