Dispose abfangen

MFC openGL

Erfahrenes Mitglied
Hi,

wollte fragen ob mir einer sagen kann wie ich das DISPOSE eines anderen Forms abfangen kann, und dann solange warte..

Also grob gesagt :

Code:
while (!form2.dispose())
form1.wait();



Aber so scheint das nicht zu gehen. Kann mir einer die Lösung verraten, bevor ich Amok laufe ? ;)

Gruss und Danke

MFC OpenGL
 
Wozu das?

Mit Dispose() wird nur dem GC gesagt, dass er das Object (in deinem Fall eine Form) verwerfen soll. Wann er das macht, weiß man nicht. Das kann sofort passieren, das kann in einigen Minuten passieren. Darauf zu warten ist ihmo nicht besonders klug.

Weiters: Finger weg vom Dispose() ;)
 
Ein Form hat unter anderem die zwei Events Closing und Closed.

Das Event Closing wird gefeuert, wenn damit begonnen wird, die Form zu schließen. Closed wird gefeuert, wenn die Form geschlossen wurde. Einfach das Closed-Event deiner Form abonnieren und dann weißt du, wann diese geschlossen wurde.

Ich denke das sollte dir jetzt weiterhelfen.
 
Sorry, wenn ich so dumm frage, aber mache erst seid gestern .Net (C#).

Wo kann ich denn meinem Form1 sagen, das er das Event Form1.closed abfängt ?

Also mit while(!Form1.closed) geht das nicht ;(
 
Einfaches Beispiel - Damit kannst du das Schließen einer anderen Form abfangen:
Code:
private void frmMain_Load(object sender, System.EventArgs e)
{
	frmTest frm = new frmTest();
	frm.Closed += new EventHandler(frm_Closed);
        frm.Show();
}

private void frm_Closed(object sender, EventArgs e)
{
	Console.WriteLine("Form closed");
}
Wenn es die eigene Form betrifft, dann schalte das Eigenschaften-Fenster deines Visual Studios auf die Events um (der gelbe Blitz) und Doppelklick auf das entsprechende Event und dort kannst deinen Code dann reintun. Jedoch wirst du da das Closed nicht benutzen können, weil die eigene Form dann ja schon weg ist ;-)

Für Aufräumarbeiten in der eigenen Form ist das Closing-Event gedacht.
 
Zuletzt bearbeitet:
Zurück