Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Note
Este artigo é específico para .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
O illegalPrepareConstrainedRegion MDA (assistente de depuração gerenciado) é ativado quando uma RuntimeHelpers.PrepareConstrainedRegions chamada de método não precede imediatamente a try instrução do manipulador de exceção. Essa restrição está no nível do MSIL, portanto, é permitido ter origem sem geração de código entre a chamada e a try, como comentários.
Symptoms
Uma CER (região de execução restrita) que nunca é tratada como tal, mas como um bloco de tratamento de exceção simples (finally ou catch). Como consequência, a região não é executada no caso de uma condição de memória insuficiente ou de uma anulação de thread.
Cause
O padrão de preparação de um CER não é seguido corretamente. Esse é um evento de erro. A PrepareConstrainedRegions chamada de método usada para marcar manipuladores de exceção como introdução a um CER em seus//catchfault/finallyfilter blocos deve ser usada imediatamente antes da try instrução.
Resolução
Verifique se a chamada ocorrerá PrepareConstrainedRegions imediatamente antes da instrução try .
Efeito no Runtime
Esse MDA não tem nenhum efeito sobre o CLR.
Saída
O MDA exibe o nome do método que chama o PrepareConstrainedRegions método, o deslocamento msil e uma mensagem indicando 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 a seguir demonstra o padrão que faz com que esse MDA seja ativado.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}