Laden...

Genaue Fehlermeldung statt "Anwendung reagiert nicht"

Erstellt von reloop vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.424 Views
reloop Themenstarter:in
139 Beiträge seit 2010
vor 13 Jahren
Genaue Fehlermeldung statt "Anwendung reagiert nicht"

Hallo Community,

erstmal entschuldige ich mich für das schlecht beschriebene Thema, doch leider viel mir keine treffendere Beschreibung ein. Und zwar geht es um folgendes:

Gibt es eine Möglichkeit, wie ich z.B. Fehler ausgeben kann, wenn eine Assembly nicht vorhanden ist? Momentan ist es so, dass ich die .EXE - Starte und von Windows mitgeteilt bekomme das ein Fehler aufgetreten ist und meine Anwendung nicht mehr reagiert.

Was ich quasi suche, ist quasi ein weg wie bei try - catch, der mir beim App.Do() ne Exception wirft, wenn etwas schief gelaufen ist.

In der Entwicklungsumgebung bekomme ich die Meldung, waurm es nicht funktioniert hat, natürlich immer im Debugger angezeigt, doch beim Kunden erscheint leider immer nur direkt die Meldung "Anwendung reagiert nicht mehr".

Ich hoffe, ihr versteht, worum es mir geht.

Vielen Dank,
reloop

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo reloop,

für so etwas gibt es die Events AppDomain.CurrentDomain.UnhandledException sowie Application.ThreadException.

1.346 Beiträge seit 2008
vor 13 Jahren

Dabei gibt es allerdings etwas zu beachten. Du darfst in deiner Program Klasse am besten überhaupt keinen Typ verwenden, der nicht zu Framework gehört. Sonst stürtzt es schon ab bevor du das event abboniert hast

5.742 Beiträge seit 2007
vor 13 Jahren

Du darfst in deiner Program Klasse am besten überhaupt keinen Typ verwenden, der nicht zu Framework gehört.

... oder in der gleichen Assembly wie die Program Klasse definiert ist.
Ansonsten würde sich das Ausführen eines eigenen Programmes als relativ unmöglich darstellen 😉

Außer, was evtl. sogar vorzuziehen wäre, man lädt die Assembly mit dem "eigentlichen" Programm via Reflection und ruft eine vordefinierte Methode darin auf.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo reloop,

wenn eine Assembly fehlt, kommt doch nicht "Anwendung reagiert nicht mehr". Das eine hat mit dem anderen überhaupt nichts zu tun. Da muss noch was anderes schiefgehen.

Um "Anwendung reagiert nicht mehr" zu verhindern, musst du [FAQ] Warum blockiert mein GUI? beachten.

herbivore

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Evtl. hilft schon, anstatt das Symptom zu bearbeiten, bereits die Ursache zu untersuchen.

Schau dir mal AppDomain.CurrentDomain.AssemblyResolve an, dort kannst du zumindest schonmal feststellen, was er nicht findet.

Dann wird entweder deine Meldung exakter oder du kannst gleich auf den korrekten Pfad verweisen und der Fehler tritt erst garnicht auf.

Nobody is perfect. I'm sad, i'm not nobody 🙁