Hallo,
ich hab ein Problem, zu dem ich leider noch nicht mal im Ansatz weiß, wo ich ansetzen soll:
(Windows 7 64-bit, C#, Windows Forms)
Meine Applikation wird einfach ohne Meldung beendet - ist einfach weg, so als ob man sie mit kill beendet hat. Es gibt weder ein PopUp noch finde ich irgendwas zu dem Zeitpunkt in den Windows Events. Die eigene Close/Exit Routine wird nicht durchlaufen (keine Ausgabe im Log). Selbst eine Ausgabe, die ich nach Application.Run(..) eingefügt habe, wird nicht ausgeführt. Das einzige, was noch übrig bleibt, ist das Icon im Systemtray.
Das ganze passiert natürlich leider sporadisch...
Wäre toll, wenn ihr mir Hinweise geben könntet, wie ich das Problem einkreisen kann. Evtl. alle Events in WndProc protokollieren ?
Danke !
Georg
Hallo Georg,
das klingt für mich so, als würde die Anwendung mit einer nicht gefangenen Exception abbrechen. Fängst du diese via Application.ThreadException bzw. AppDomain.CurrentDomain.UnhandledException bereits ab? Falls nicht, behandle diese beiden Events mal, da kommen manchmal Fehler an, mit denen man nicht gerechnet hat 😃
@jannemann13: Application.ThreadException fange ich schon . Die andere noch nicht. Das werde ich mal hinzufügen
@Floste: mh, guter Hinweis. Hab da so ein paar Stellen. Aber würde nicht dann auch eine Exception geworfen werden ?
unmanaged/unsafe: die chancen stehen schlecht. Den einzigen unsafe aufruf aus meiner Lib wurde nicht genutzt. Die unmanaged Parameter in Richtung user32.dll und kernel32.dll scheinen alle OK zu sein.
scheinen alle OK zu sein.
Wenn Du VS2010 Ultimate hast (evtl auch schon Premium) dann gibt es hier die CodeAnalytics, die man über ein Projekt laufen lassen kann.
Die geben Dir Tipps/Hinweise/Warnings, wenn solche Dinge falsch behandelt werden; ähnlich zu den Dispose-Warnings.
Ansonsten siehe Beitrag von jannemann13
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
bin leider noch auf VS2008 Standard - aber ich weiß, wer eine Ultimate Version nutzt. Danke für den hinweis.