2012-04-13 8 views
3

Entwickelt eine MDI Windows Forms-Anwendung.Normal schließen für nicht modale Formen und offene modale Formen in Block verwenden. Genug?

Von einem Begrüßungsbildschirm (Art einer Startseite) aus kann der Benutzer bestimmte Fenster öffnen, um Entitäten hinzuzufügen oder zu bearbeiten, beispielsweise einen Auftrag oder einen Kunden. Jedes davon öffnet sich in einem eigenen nicht modalen Fenster (als MDIChild). Das Hinzufügen eines neuen Datensatzes in einigen Situationen erfolgt in einem modalen Fenster.

Ich mache nicht explizit eine Dispose() auf die nicht modalen Fenster. Wie bei der Untersuchung während des Debuggens wird beim Klicken auf die Schaltfläche Schließen der Formulare die Methode Dispose() in der Datei Designer.cs ausgeführt und die Methode base.Disposing aufgerufen. Ich nehme das zu verstehen, dass die Form in der Tat durch Klicken auf den Schließen-Button entsorgt wird.

Für Dialogfenster öffne ich sie innerhalb eines using-Blocks, der, wie ich verstehe, Dispose aus dem Fenster, wenn der using-Block endet.

Also, ist mein Gesamtverständnis und Ansatz richtig?

Ich habe Google auf diese. Scheint es gibt ziemlich starke Befürworter verschiedener Ansätze, aufgrund derer ich ein bisschen unsicher bin, ob mein Ansatz in Ordnung ist.

Ich würde Ihre Klarstellungen schätzen.

Dank und Grüße.

+0

Das ist in Ordnung, keine Änderungen sind notwendig. –

Antwort

0

Sie haben die Variable in einem using Block? Du bist ziemlich gut dran. Es sei denn, diese Klasse enthält nicht verwaltete Ressourcen. C# -Dialoge und Formulare werden nicht verwaltet. Fast alles in C# ist verwalteter Speicher. Also sollte die Verwendung ausreichen.

Sie haben eine using-Klausel so gilt folgendes nicht wirklich, aber es ist gut

„Sind IDisposables nicht entsorgt, wenn sie außerhalb des Gültigkeitsbereichs gehen?“ Zu wissen Nein. Wenn das IDisposable-Objekt finalisierbar ist, was nicht dasselbe ist, wird es abgeschlossen, wenn es Müll gesammelt wird. Welches könnte bald oder könnte fast nie sein.

Viel Diskussion, die Sie hier für weitere Informationen helfen sollte

C# USING keyword - when and when not to use it?

Mein gegenwärtiges Verständnis ist, dass, wenn Sie nicht verwalteten Ressourcen der Garbage Collector oder Schließen des Programms verwenden, werden darum kümmern, wenn es entscheidet, dass es den wiederhergestellten Speicher benötigt oder das Programm in einem stabilen Zustand schließt.