Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Kommentar
Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.
Den illegalPrepareConstrainedRegion hanterade felsökningsassistenten (MDA) aktiveras när ett RuntimeHelpers.PrepareConstrainedRegions metodanrop inte omedelbart föregår instruktionen try för undantagshanteraren. Den här begränsningen är på MSIL-nivå, så det är tillåtet att ha en icke-kodgenererande källa mellan anropet tryoch , till exempel kommentarer.
Symtom
En begränsad körningsregion (CER) som aldrig behandlas som sådan, utan som ett enkelt undantagshanteringsblock (finally eller catch). Därför körs inte regionen i händelse av ett out-of-memory-villkor eller om en tråd avbryts.
Orsak
Förberedelsemönstret för en CER följs inte korrekt. Det här är en felhändelse. Metodanropet PrepareConstrainedRegions som används för att markera undantagshanterare som att införa en CER i sina//catchfault/finallyfilter block måste användas omedelbart före -instruktionen.try
Åtgärd
Kontrollera att anropet ska PrepareConstrainedRegions ske omedelbart före -instruktionen try .
Effekt på körningen
Denna MDA har ingen effekt på CLR.
Output
MDA visar namnet på metoden som anropar PrepareConstrainedRegions metoden, MSIL-förskjutningen och ett meddelande som anger att anropet inte omedelbart föregår början av try-blocket.
Konfiguration
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>
Exempel
I följande kodexempel visas det mönster som gör att den här MDA:en aktiveras.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}