Frage

Wenn Sie eine Ausnahme von innerhalb eines MFC-Dialogs werfen, die App hängt, auch wenn Sie einen catch-Block in Ihrem Code. Es weigert sich, die Maus oder Tastatur, und die einzige Möglichkeit, zu reagieren, es herunterzufahren ist Task-Manager zu verwenden.

Warum ich bin Entsendung diese Frage

Zu meiner Schande, es ist eine beliebte schrumpfverpackte Anwendung, die jedes Mal, es trifft einen außergewöhnlichen Fehler in einem modalen Dialog hängt. Wenn wir eine massive Verschiebung von Integer-Fehlercodes, Ausnahmen, war ich verantwortlich für die Wahl std :: Ausnahme als die Basisklasse für die ausgelöste Ausnahmen. Erst eine riesige Menge an Arbeit in die Umsetzung ging, dass unsere Prüfung dieses Problem aufgedeckt, und da war es schon zu spät zu ändern. Hoffentlich wird diese Frage / Antwort wird jemand verhindern, den gleichen Fehler zu machen.

War es hilfreich?

Lösung

Der Code für CDialog :: DoModal macht den Dialog modal durch das übergeordnete Fenster zu deaktivieren. Wenn der Dialog Code zurückgibt, wird das Fenster wieder aktiviert. Es ist eine explizite Sperre zum CException * Fehler, aber nicht für jede andere Art von geworfener Ausnahme; damit das übergeordnete Fenster wird nie wieder aktiviert.

Ändern Sie den Code einen Zeiger auf jede Ausnahme von CException abgeleitet zu werfen, und Sie werden das Problem beheben.

Andere Tipps

Wenn Sie daran interessiert sind, zu lernen, wie Windows erkennt apphangs wir einige Beiträge dazu auf dem Windows-Fehlerberichterstattung Blog hinzugefügt haben:

es werde hängt Teil 1 von 4

Lassen Sie es hängt Teil 2 von 4 sein

Lassen Sie es hängt Teil 3 von 4 sein

es werde hängt Teil seiner 4 von 4

Wichtig zu beachten ist, dass diese Informationen, wenn sie durch die Microsoft Windows-Fehlerberichterstattung gesendet zu den Software-Entwicklern mitgeteilt wird, um zu versuchen und diese Probleme zu beheben. Wenn Sie in Ihre Fehlerberichte senden werden Sie beheben Probleme helfen, die auf Ihrem PC auftreten!

Ich bin ein Programm-Manager bei Microsoft auf dem Windows-Fehlerberichterstattung Team.

Marks Antwort ist richtig. Für eine viel genauere Analyse dieses Problems und einer detaillierten Vorschlag für mit ihm in Ihrem eigenen Code zu tun, finden Sie in diesem FAQ von Doug Harrison (Abschnitt Q6 insbesondere).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top