.NET Les applications utilisant des objets COM peuvent rencontrer AccessViolationExceptions
. Même avec des blocs try-catch
, ces exceptions pourraient ne pas être capturées, ce qui entraîne des pauses débogueurs lors des appels de méthode. Ce comportement provient du mécanisme des exceptions d'état corrompu de .NET 4.0 (CSE). L'équipe CLR de Microsoft conseille de tenter de gérer les CSE dans le code géré, car ils signifient un état de processus compromis. AccessViolationException
tombe sous la catégorie CSE.
Voici plusieurs approches pour gérer cette situation:
Target .NET Framework 3.5: Recompile votre application pour le .NET Framework 3.5 et l'exécutez dans l'environnement .NET 4.0.
Modifier la configuration de l'application: Inclure l'entrée suivante dans le fichier de configuration de votre application (.config
):
<code class="language-xml"><legacycorruptedstateexceptionspolicy enabled="true" /></code>
Le réglage enabled="true"
permet au comportement hérité de capturer ces exceptions.
HandleProcessCorruptedStateExceptions
attribut: annotez les méthodes sensibles à ces exceptions avec l'attribut HandleProcessCorruptedStateExceptions
: <code class="language-csharp">[HandleProcessCorruptedStateExceptions] public void MyComMethod() { ... }</code>
En mettant en œuvre l'une de ces solutions, vous pouvez capturer et gérer efficacement AccessViolationExceptions
résultant des interactions d'objets com.
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!