Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Cet article est spécifique à .NET Framework. Ceci ne s’applique pas aux implémentations plus récentes de .NET, y compris .NET 6 et versions ultérieures.
L’Assistant illegalPrepareConstrainedRegion débogage managé (MDA) est activé lorsqu’un RuntimeHelpers.PrepareConstrainedRegions appel de méthode ne précède pas immédiatement l’instruction try du gestionnaire d’exceptions. Cette restriction est au niveau MSIL. Il est donc permis d’avoir une source qui ne génère pas de code entre l’appel et le try, comme les commentaires.
Symptoms
Région d’exécution contrainte (CER) qui n’est jamais traitée comme telle, mais comme un bloc de gestion d’exceptions simple (finally ou catch). Par conséquent, la région ne s’exécute pas en cas de condition de mémoire insuffisante ou d’abandon d’un thread.
Cause
Le modèle de préparation d’un CER n’est pas suivi correctement. Il s’agit d’un événement d’erreur. L’appel PrepareConstrainedRegions de méthode utilisé pour marquer les gestionnaires d’exceptions comme l’introduction d’un cer dans leurs//catchfault/finallyfilter blocs doit être utilisé immédiatement avant l’instruction.try
Résolution
Vérifiez que l’appel se PrepareConstrainedRegions produit immédiatement avant l’instruction try .
Effet sur le runtime
Ce MDA n’a aucun effet sur le CLR.
Sortie
Le MDA affiche le nom de la méthode appelant la PrepareConstrainedRegions méthode, le décalage MSIL et un message indiquant que l’appel ne précède pas immédiatement le début du bloc try.
Configuration
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>
Example
L’exemple de code suivant illustre le modèle qui entraîne l’activation de cette MDA.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}