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 try
komentář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//catch
fault
/finally
filter
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
{
…
}
}