Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O illegalPrepareConstrainedRegion assistente de depuração gerido (MDA) é ativado quando uma RuntimeHelpers.PrepareConstrainedRegions chamada de método não precede imediatamente a try instrução do manipulador de exceções. Esta restrição está ao nível do MSIL, pelo que é permitido ter uma fonte não geradora de código entre a chamada e o try, como comentários.
Sintomas
Uma região de execução restrita (CER) que nunca é tratada como tal, mas como um simples bloco de tratamento de exceções (finally ou catch). Como consequência, a região não é executada em caso de falta de memória ou aborto de thread.
Motivo
O padrão de preparação para uma CER não é seguido corretamente. Isto é um evento de erro. A PrepareConstrainedRegions chamada de método usada para marcar os manipuladores de exceções como introduzindo uma CER nos seus//catchfault/finallyfilter blocos deve ser usada imediatamente antes da try instrução.
Resolução
Certifique-se de que a chamada PrepareConstrainedRegions ocorre imediatamente antes da try declaração.
Efeito no tempo de execução
Este MDA não tem efeito no CLR.
Output
A MDA mostra o nome do método que chama o PrepareConstrainedRegions método, o deslocamento MSIL e uma mensagem a indicar que a chamada não precede imediatamente o início do bloco try.
Configuração
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>
Example
O exemplo de código seguinte demonstra o padrão que faz com que esta MDA seja ativada.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}