Danke für die Antworten bislang!
Beim Destroy einer Klasse weiß ich in der Regel nicht, ob lediglich die Instanz freigegeben wird oder das Programm beendet. Ebensowenig weiß ich, was um mich herum gerade passiert.
Absolut, das kann man nicht wissen, das ein Destruktor in der Regel alles aufräumen sollte was man aufgebaut hast stellt sicher niemand in Frage
Nu ja, da geht es um DLLs
In der Überschrift schon, aber das lässt sich auch übertragen. So zum Beispiel in dem anderen Artikel.
Der nächste Entwickler nach Dir räumt auf (schließt z.B. irgend welche Handles) und ist am Ende irritiert, dass sein Code nicht ausgeführt wird, weil ein Schlaumeier vor ihm irgendwo ein ExitProcess eingebaut hat.
Ja, aber wenn die Anwendung endet, dann endet sie halt. Sein Coe würde auch nicht ausgeführt bei Stromausfall oder wenn die Anwendung abstürzt. Das Betriebssystem kümmert sich nach Prozess-Ende schon selbst darum dass Dateien, Handles usw. ordentlich geschlossen werden.
In einer anderen Anwendung tun wir genau das: WENN Sie endet:
- Stelle Sicher dass alle kritischen Dinge (Ausgänge, Motoren, ...) im sicheren Zustand sind
- Schreibe Einstellungen auf die Platte
- Schreibe in Log-Datei dass die Anwendung nun zu Ende ist
- Andwendung endet
Dieser Teil muss natürlich gemacht werden und ist ganz spezifisch für die einzelne Anwendung. Ich fand das ziemlich sinnvoll.
Im konkreten Fall weiß ich auch was so lange braucht. Es wäre ein irrsinniger Aufwand das so umzubauen dass es sich jederzeit abbrechen ließe. Und es macht, wie der gute Raymond sagt, auch keine Sinn. Niemand interessiert sich mehr für das Ergebnis.