Memory freigeben von TextBox

16/12/2008 - 11:26 von Boskop | Report spam
Hallo,

ich mache gerade meine ersten Versuche mit WPF und bin auf ein Verhalten
gestossen, dass ich nicht ganz verstehe. Und zwar habe ich in einem Panel ein
paar TextBoxen. Wenn ich nun diese Entferne, möchte ich, dass der Speicher
dafür sofort freigegeben wird. Dies passiert aber nicht, erst wenn die
Applikation geschlossen wird.

Ich führe folgende Methode aus:

private void ChangePanelClicked(object sender, RoutedEventArgs e) {
ContentPanel.DataContext = null;
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("*********************");
}

Ich habe den Destruktor der TextBox in der Klasse OTextBox überschrieben.
Beim Ausführen dieser Methode wird er nicht ausgeführt. Erst, wenn ich die
Applikation schliesse, werden die 4 Instanzen aufgeràumt (2 Initial und 2
füge ich in der Methode nochmal hinzu).

Dieses Verhalten kann in meiner geplanten Applikation zu Memoryproblemen
führen, weil ich die Panels sehr dynamisch veràndere. Mache ich etwas falsch?
Etwas zuwenig oder kann mir jemand sagen, warum das so ist?

Besten Dank.
 

Lesen sie die antworten

#1 tcnt.Dzaebel
16/12/2008 - 11:40 | Warnen spam
Hallo <Name>?,

ich mache gerade meine ersten Versuche mit WPF und
bin auf ein Verhalten gestossen, dass ich nicht
ganz verstehe. Und zwar habe ich in einem Panel ein
paar TextBoxen. Wenn ich nun diese Entferne, möchte
ich, dass der Speicher dafür sofort freigegeben wird.
Dies passiert aber nicht, erst wenn die
Applikation geschlossen wird.
      ContentPanel.Children.Clear();



Clear führt keinen expliziten Destruktor aus -
ganz unabhàngig von WPF.
Das macht z.B.: Dispose():

[Verwenden von Konstruktoren und Destruktoren]
http://msdn.microsoft.com/de-de/lib...8e49e.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen