Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Warum stürzt meine WPF Anwendung nach längerer Nichtaktivität ab?
Günther Weber
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Hattingen

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 511
Herkunft: Münster

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Günther Weber
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Hattingen

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Günther Weber am .
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 690

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Günther Weber
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Hattingen

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1820
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers
Günther Weber
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Hattingen

Themenstarter:

beantworten | zitieren | melden

Zitat von T-Virus
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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1820
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers