[gelöst] Forms und temporäre Dateien zum Programmende schliessen
-
Das Programm verwendet mehrere vom Anwender auswählbare Forms. Einige dieser Forms verwenden temporäre Dateien,
die zum Programmende gelöscht werden sollen. File.Delete(tempfile) führt zu einer Exception, wenn beim Schliessen
des Programmes noch eine Form mit Datei geöffnet ist.Ich will also bei mainform_Closing oder mainform_Closed zunächst mit den noch offenen Forms und Dateien komplett aufräumen.
-
Und wieso nicht bei
ApplicationExit
? Dann sind alle Forms bereits geschlossen. Oder brauchen die Forms zusätzlichen manuellen Bedarf, um aufzuräumen? Dann wären vielleicht ein paar zusätzliche Informationen wünschenswert. Es ist mir jedenfalls nicht so ganz klar, wieso Forms und Dateien noch offen sein können.Grüssli
-
Dravere schrieb:
Es ist mir jedenfalls nicht so ganz klar, wieso Forms und Dateien noch offen sein können.
Grüssli
Tja, ich schaetze mal weil jemand die gaengigen Programmierparadigmen nicht einhaelt oder einfach nur Unsinn programmiert
-
Danke für die Hinweise, Problem gelöst.
Es ging um temporär in Dateien abgelegte Images, die in PictureBoxes in Forms angezeigt werden.
Statt Image.FromFile() mache ich das jetzt mit einem FileStream der Datei und hole diesen mit Image.FromStream().
Nach Übernahme des Images in die PictureBox wird der Stream mit Close() geschlossen. So lassen sich
die Dateien unter mainForm_Closing() ohne mögliche exception löschen.
-
Du kannst auch Image.FromFile weiterhin verwenden, musst aber halt einfach Image.Dispose aufrufen, wenn die Form geschlossen wird. Wie man dies auch in der Dokumentation nachlesen kann:
MSDN schrieb:
The file remains locked until the Image is disposed.
http://msdn.microsoft.com/en-us/library/stf701f5.aspx
Was du übrigens sowieso tun solltest, auch wenn du
FileStream
verwendest. Du erzeugst sonst ein mögliches Memory-Leak an GDI+ Handles.Grüssli