illegalPrepareConstrainedRegion MDA
Feljegyzés
Ez a cikk a .NET-keretrendszer vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.
A illegalPrepareConstrainedRegion
felügyelt hibakeresési segéd (MDA) akkor aktiválódik, ha egy RuntimeHelpers.PrepareConstrainedRegions metódushívás nem előzi meg azonnal a try
kivételkezelő utasítását. Ez a korlátozás az MSIL szintjén van, ezért megengedett, hogy a hívás és a try
megjegyzések között ne kódgeneráló forrás legyen.
Hibajelenségek
Korlátozott végrehajtási régió (CER), amelyet soha nem kezelnek ilyenként, hanem egyszerű kivételkezelési blokkként (finally
vagy catch
). Ennek következtében a régió nem fut memóriakihasználtság vagy szál megszakítása esetén.
Ok
A CER-hez tartozó előkészítési minta nem követi megfelelően. Ez egy hibaesemény. A PrepareConstrainedRegions kivételkezelők blokkokban//catch
fault
/finally
filter
való bevezetésének megjelölésére használt metódushívást közvetlenül az try
utasítás előtt kell használni.
Resolution (Osztás)
Győződjön meg arról, hogy a hívás PrepareConstrainedRegions közvetlenül az try
utasítás előtt történik.
Effektus a futtatókörnyezetre
Ez az MDA nincs hatással a CLR-re.
Hozam
Az MDA megjeleníti a metódust hívó PrepareConstrainedRegions metódus nevét, az MSIL-eltolást, és egy üzenet, amely jelzi, hogy a hívás nem előzi meg közvetlenül a próbablokk elejét.
Konfiguráció
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion/>
</assistants>
</mdaConfig>
Példa
Az alábbi példakód azt a mintát mutatja be, amely az MDA aktiválását okozza.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: