Laden...

Warum stürzt meine WPF Anwendung nach längerer Nichtaktivität ab?

Erstellt von Günther Weber vor 3 Jahren Letzter Beitrag vor 3 Jahren 726 Views
G
Günther Weber Themenstarter:in
28 Beiträge seit 2010
vor 3 Jahren
Warum stürzt meine WPF Anwendung nach längerer Nichtaktivität ab?

Hallo,

An mehreren Rechnern im Firmennetz wird mit meinem WPF Programm gearbeitet. Das Programm ist in der Regel dauerhaft geöffnet und wird immer wieder kurz benutzt. Alles ohne Probleme.

Nur bei einem Kollegen gibt es das folgende Problem: Wenn er mal eine halbe Stunde das Programm nicht benutzt hat und es dann in den Vordergrund bringt, stürzt es kommentarlos ab. Mit anderen Programmen passiert ihm das nicht.

Alle Rechner sind laut Admin auf dem gleichen aktuellen Stand. Als ich meinen Verdacht geäußert habe, auf dem Rechner wäre irgendetwas nicht in Ordnung, wurde ich böse angeguckt.

Wie kann ich diesem Problem auf die Schliche kommen? Ich habe schon an allen möglichen Stellen Try/Catch-Blöcke eingebaut, aber der Fehler, wenn er denn tatsächlich in meinem Programm zu finden ist, muss woanders auftreten. Wo kann ich denn so einen Try/Catch-Block anbringen, der während der gesamten Laufzeit des Programms aktiv ist?

Danke - Günther

H
523 Beiträge seit 2008
vor 3 Jahren

Dafür gibt es "Unhandled Exception"-Handler mit denen man unbehandelte Ausnahmen abfangen kann.

Du kannst auch einen Blick in das Ereignisprotokoll werfen, da werden unbehandelte Ausnahmen, die eine Anwendung zwangsweise beenden mitunter protokolliert.

G
Günther Weber Themenstarter:in
28 Beiträge seit 2010
vor 3 Jahren

Danke, das kannte ich noch nicht.

Habe den Code sinngemäß in mein MainViewModel eingebaut:
Beispielcode AppDomain.UnhandledException von Microsoft-Seite

Jetzt heißt es abwarten.
Danke - Günther

Im Ereignisprotokoll steht nichts.

T
708 Beiträge seit 2008
vor 3 Jahren

Hallo Günther,

wenn die App abstürzen würde, gäbe es einen EventLog-Eintrag.
Klingt für mich mehr als würde sie geschlossen (von wem auch immer).
Unter Forms gab es die CloseReason, die beschreibt wodurch das Schließen ausgeführt wurde. Unter WPF ist das etwas anders:
CloseReason unter WPF

G
Günther Weber Themenstarter:in
28 Beiträge seit 2010
vor 3 Jahren

Ok, danke. Habe ich auch noch eingebaut.

In einer Programm-Ende-Routine hatte ich schon eine Messagebox "Programm wird beendet", in der Application.Current.Exit-Routine lasse ich jetzt auch noch den Exit-Code anzeigen.

Wenn das Programm über den Task-Manager beendet wird, ist nur die erste Meldung zu sehen, aber nur wenn man genau hinguckt, denn die verschwindet sofort wieder. Kann also sein, dass das alles nicht hilft.

T
2.219 Beiträge seit 2008
vor 3 Jahren

@Günther Weber
Wie wäre es dann, dass die Logs schreibst?
Kannst du dann z.B. direkt in der Ereignis Anzeige eintragen lassen.
Schau dir dazu ggf. mal Log4Net an, dass dürfte mit entsprechender Konfiguration auch ohne Probleme umsetzbar sein.

Log4Net

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

G
Günther Weber Themenstarter:in
28 Beiträge seit 2010
vor 3 Jahren

Wie wäre es dann, dass die Logs schreibst?

Dann muss der Kollege erst den Admin rufen damit dieser in der Ereignisanzeige einen Eintrag sucht, den es möglicherweise nicht gibt. Eventuell mache ich das später noch, für den Fall dass mal ein Exit-Code ungleich 0 auftaucht.

Jetzt will ich wissen ob meine Messagebox "Programm wird beendet" zu sehen ist und ob eine Meldung mit welchem Exit-Code angezeigt wird. Bei allen Anwendern die keine Probleme haben würde ich mit jeweils zwei Einträgen die Ereignisanzeige zumüllen. Die Belästigung durch zwei zusätzliche Klicks möchte ich denen nur vorübergehend zumuten.

T
2.219 Beiträge seit 2008
vor 3 Jahren

Alternativ kannst du auch mit Log4Net einfach lokal loggen.
Schau es dir am besten an.
Dein jetziger Ansatz kann durch einen falschen klick oder Enter auch zunichte gemacht werden.
Wenn es im Log steht hast du es schwarz auf weiß 😃
Wäre mir lieber als auf eine MessageBox achten zu müssen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.