illegalPrepareConstrainedRegion MDA
O illegalPrepareConstrainedRegion Assistente de depuração gerenciada (MDA) é ativado quando uma RuntimeHelpers.PrepareConstrainedRegions chamada de método não deve preceder imediatamente o try a declaração do manipulador de exceção. Essa restrição é em MSIL nível, portanto, é permitido ter não geradores de código fonte entre a chamada e o try, como comentários.
Sintomas
Uma região de execução restrita (CER) nunca é tratado como tal, mas como uma bloco de manipulação de exceção simple (finally ou catch). Como conseqüência, a região não é executado no evento de uma condição de falta de memória ou uma anulação de thread.
Causa
O padrão de preparação de uma CER não é seguido corretamente. Este é um evento de erro. O PrepareConstrainedRegions chamada de método usada para marcar os manipuladores de exceção como apresentando uma CER em seus catch/finally/fault/filter blocos devem ser usados imediatamente antes do try instrução.
Resolução
Certifique-se de que a chamada para PrepareConstrainedRegions ocorre imediatamente antes do tryinstrução.
Efeito sobre o tempo de execução.
Este MDA não tem efeito sobre o CLR.
Saída
O MDA exibe o nome da chamada do método de PrepareConstrainedRegions método, o deslocamento MSIL e uma mensagem indicando que a chamada não preceder 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
{
…
}
}