illegalPrepareConstrainedRegion MDA
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 try
och , 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//catch
fault
/finally
filter
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
{
…
}
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för