Visual Studio 2010: A 64-Bit Windows Winforms Exception Acvatling Enigma
Ein merkwürdiges Problem tritt in Visual Studio 2010 auf: Nicht behandelte Ausnahmen in WinForms-Anwendungen, die auf 64-Bit-Fenstern ausgeführt werden, verschwinden häufig lautlos. Die Anwendung setzt die Ausführung ohne die erwartete Fehlermeldung oder Debugger -Pause fort.
Verständnis der Ursache
Dieses Verhalten ist mit Windows '"Wow64" -Schicht verknüpft, die 32-Bit-Code auf 64-Bit-Systemen emuliert. Wenn ein 64-Bit-Fenstermanager ein Ereignis auslöst (wie das Ereignis Load
), fängt WOW64 den Code des 32-Bit-Prozesses ab. Nicht behandelte Ausnahmen innerhalb dieses abgefangenen Code werden maskiert, wodurch der Debugger daran gehindert wird.
Lösungen und Problemumgehungen
Mehrere Strategien können dieses Problem angehen:
Zielplattformanpassung: Ändern Sie das Projekt "Plattform" in "AnyCPU" (in Projekteigenschaften & GT; Build). Dies macht die Anwendung zu einem 64-Bit-Prozess, der WOW64 umgeht. Hinweis: Dies kann Kompatibilitätsprobleme mit 32-Bit-Abhängigkeiten verursachen.
Debugger -Ausnahmeeinstellungen: in Debug & GT; Ausnahmen überprüfen das Feld "geworfen" auf CLR -Ausnahmen. Dies zwingt den Debugger innehalten, wenn Ausnahmen auftreten.
Ereignisausnahmeverarbeitung laden: Wickeln Sie den Code in den Ereignishandler in einem Load
-Block. Beenden Sie im Block try-catch
den Antrag, um sicherzustellen, dass die Ausnahme festgestellt wird. catch
Globale Ausnahmebehandlung: Verwenden Sie in Ihrer Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
-Methode. Dies fängt unbehandelte Ausnahmen im Debug -Modus auf, könnte jedoch die Wirksamkeit des Main()
-Ergners verringern. ThreadException
Ereignishandler -Bewertung: Überlegen Sie, ob der problematische Code im Ereignis angefordert wird. Diese Veranstaltung ist nicht immer wichtig, und es kann unnötig, insbesondere in VB.NET, bessere Ereignis -Handler -Auswahlmöglichkeiten zu verdecken. Load
Betriebssystem Upgrade: Aufstieg auf Windows 8 oder später löst dieses WOW64-Problem häufig auf.
Das obige ist der detaillierte Inhalt vonWarum scheinen unbehandelte Ausnahmen in Visual Studio 2010 WinForms Apps zu 64-Bit-Fenstern zu verschwinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!