Hallo Leute,
ich habe folgende Frage: Muss ich bei Windows Forms alle Controls auf der Form explizit disposen mittels Dispose()?
Ich habe folgende Dispose-Implementierung in der Form:
public void Close()
{
((IDisposable)this).Dispose();
}
void IDisposable.Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
~ViewDruckSelektion()
{
this.Dispose(false);
}
public void Dispose (bool pDisposing)
{
if (pDisposing)
{
if (components != null)
{
components.Dispose();
}
}
// Hier die unverwalteten Ressourcen freigeben
base.Dispose(pDisposing);
}
Regelt components.Dispose(); den Dispose()-Aufruf für alle in der Form enthaltenen Komponenten?
Gruß fungi
Hallo fungi35,
Regelt components.Dispose(); den Dispose()-Aufruf für alle in der Form enthaltenen Komponenten?
Da, da wird mit einer Schleife über alle Komponenten (und deren Kinder) iteriert und Dispose durchgeführt.
Für WinForms reicht sonst auch der Code aus der Visual-Studio-Vorlage für das Umsetzen des Dispose-Patterns.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Die Form
-Klasse implementiert schon IDisposable
weil von Component
abgeleitet.
Hier nochmals explizit IDisposable
implementieren ist eher der klassische Fall von Torte im Auge. Wenn du explizit was zum disposen hast, dann mittels override
der Dispose(boolean)
Methode.