illegalPrepareConstrainedRegion MDA
The illegalPrepareConstrainedRegion gerenciado Assistente de depuração (MDA) é ativado quando um RuntimeHelpers.PrepareConstrainedRegions telefonar de método não deve preceder imediatamente o try demonstrativo do manipulador de exceção. Essa restrição é no nível da MSIL, portanto, é permitido ter não geradores de código fonte entre a telefonar e o try, sistema autônomo comentários.
Sintomas
Uma região de execução restrita (CER) nunca é tratada sistema autônomo tal, mas sistema autônomo uma exceção simples manipulação de bloco (finally ou catch). sistema autônomo conseqüência, a região não é executado no evento de uma condição de fora da memória ou uma anulação de thread.
Causa
O padrão de preparação de uma CER não é seguido corretamente.Esse é um evento de erro.The PrepareConstrainedRegions telefonar do método usada para marcar sistema autônomo manipuladores de exceção sistema autônomo introduzir uma CER em seus catch/finally/fault/filter blocos devem ser usados imediatamente antes de try demonstrativo.
Resolução
Certifique-se de que a telefonar para PrepareConstrainedRegions ocorre imediatamente antes de trydemonstrativo.
Efeito sobre o tempo de execução
Este MDA não tem efeito sobre o CLR.
Saída
O MDA exibe o nome do método chamando o PrepareConstrainedRegions método, o deslocamento MSIL e uma mensagem indicando que a telefonar não preceder imediatamente o início do bloco try.
Configuração
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>
Exemplo
O exemplo de código a seguir demonstra o padrão que faz com que este MDA ser ativado.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}
Consulte também
Conceitos
Diagnosticar erros com assistentes de depuração gerenciadas
Visão geral do empacotamento interop