Sdílet prostřednictvím


illegalPrepareConstrainedRegion – pomocník spravovaného ladění (MDA)

Poznámka:

Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.

Pomocník illegalPrepareConstrainedRegion spravovaného ladění (MDA) se aktivuje, když RuntimeHelpers.PrepareConstrainedRegions volání metody bezprostředně předchází try příkazu obslužné rutiny výjimky. Toto omezení je na úrovni jazyka MSIL, takže je možné mít mezi voláním a trykomentářem negenerující zdroj kódu.

Příznaky

Oblast omezeného spuštění (CER), která se nikdy nechová jako taková, ale jako jednoduchý blok zpracování výjimek (finally nebo catch). V důsledku toho se oblast nespustí v případě stavu nedostatku paměti nebo přerušení vlákna.

Příčina

Vzor přípravy pro CER není správně dodržen. Jedná se o chybovou událost. Volání PrepareConstrainedRegions metody použité k označení obslužných rutin výjimek jako zavedení CER v jejich//catchfault/finallyfilter blocích musí být použito bezprostředně před příkazem.try

Rozlišení

Ujistěte se, že se volání PrepareConstrainedRegions stane bezprostředně před příkazem try .

Vliv na modul runtime

Tento mdA nemá žádný vliv na CLR.

Výstup

MDA zobrazí název metody volání PrepareConstrainedRegions metody, posun MSIL a zprávu označující volání bezprostředně před začátek bloku try.

Konfigurace

<mdaConfig>
  <assistants>
    <illegalPrepareConstrainedRegion/>
  </assistants>
</mdaConfig>

Příklad

Následující příklad kódu ukazuje vzor, který způsobí aktivaci MDA.

void MethodWithInvalidPCR()
{
    RuntimeHelpers.PrepareConstrainedRegions();
    Object o = new Object();
    try
    {
        …
    }
    finally
    {
        …
    }
}

Viz také