Maison >développement back-end >C++ >Pourquoi VS2010 ne montre-t-il pas des messages d'exception non gérés dans les applications WinForms 64 bits?

Pourquoi VS2010 ne montre-t-il pas des messages d'exception non gérés dans les applications WinForms 64 bits?

Susan Sarandon
Susan Sarandonoriginal
2025-02-01 22:01:09541parcourir

VS2010 64 -BIT L'application WinForms n'a pas affiché des messages anormaux non transformés: un problème

Lorsque vous utilisez C # et .NET Framework 4 pour créer une nouvelle application Windows Forms dans VS2010, les utilisateurs ont rencontré un comportement inhabituel sur les anomalies non transformées. Après avoir ajouté un code spécifique au programme de traitement FORM1_LOAD, il est prévu que le message inhabituel improtué dans une certaine ligne ne soit pas affiché. Au contraire, l'exécution du code n'a aucune erreur et l'application continue de s'exécuter.

Ce comportement spécial est attribué à la méthode d'interaction avec 64-bits 7 via la couche analogique WOW64. Le problème est que cette couche intercepte l'anomalie du code généré par la notification générée par le gestionnaire de fenêtres 64-bits. En conséquence, le débogueur n'a pas pu identifier et saisir l'exception.

Afin de résoudre ce problème, plusieurs solutions ont été proposées:

Définissez la cible de la plate-forme comme anycpu et annulez le "préfère 32 -BIT" sélectionné

Cette méthode a changé l'application vers le processus 64-bits, éliminant la couche de simulation WOW64 et ses problèmes anormaux connexes. Cependant, il peut affecter la fonction "d'édition et de poursuite", et il peut ne pas être possible de s'appuyer sur le code 32-bits.

Autres solutions

Dans "Debug" & gt; "Odoma", le CLR permet de manière anormale la case "Throwing", et le débogueur obligatoire arrête la ligne de code anormale.
  • Le bloc Try / Catch avec traitement Fairfast dans le programme de traitement des événements de charge.
  • Définir
  • dans le principal () pour désactiver la capture anormale en mode de débogage.
  • Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) Re -valuate la nécessité du code dans le programme de traitement des événements de charge et envisagez d'utiliser un autre programme de traitement d'événements ou un constructeur pour placer du code approprié.
  • Metgraquez vers Windows 8 ou supérieur, dont le problème WOW64 a été résolu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn