Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

IllegalPrepareConstrainedRegion

Der IllegalPrepareConstrainedRegion-MDA (Managed Debugging Assistant, Assistent für verwaltetes Debuggen) wird aktiviert, wenn der try-Anweisung des Ausnahmehandlers nicht unmittelbar ein Aufruf der System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions-Methode vorangestellt ist. Diese Einschränkung gilt auf MSIL-Ebene. Es ist deshalb zulässig, dass sich zwischen dem Aufruf und der try-Anweisung Quellcode befindet, der keinen Code generiert (z. B. Kommentare).

Ein eingeschränkter Ausführungsbereich (Constrained Execution Region, CER), der nicht als solcher behandelt wird, sondern als einfacher Ausnahmehandlerblock (finally oder catch). Als Folge davon wird dieser Bereich bei nicht ausreichendem Speicherplatz oder im Fall eines Threadabbruchs nicht ausgeführt.

Die Regeln zum Vorbereiten eines CER wurden nicht ordnungsgemäß befolgt. Es handelt sich hierbei um ein Fehlerereignis. Der Aufruf der PrepareConstrainedRegions-Methode, der zum Kennzeichnen des Beginns eines CER in den catch/finally/fault/filter-Blöcken von Ausnahmehandlern verwendet wird, muss direkt vor der try-Anweisung erfolgen.

Stellen Sie sicher, dass der Aufruf von PrepareConstrainedRegions direkt vor der try-Anweisung erfolgt.

Dieser MDA hat keine Auswirkungen auf die CLR.

Der MDA zeigt den Namen der Methode an, die die PrepareConstrainedRegions-Methode aufgerufen hat, den MSIL-Offset und eine Meldung, die darauf hinweist, dass der Aufruf dem try-Block nicht unmittelbar vorangestellt ist.

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

Im folgenden Codebeispiel ist der Ablauf dargestellt, der zum Aktivieren dieses MDA führt.

void MethodWithInvalidPCR()
{
    RuntimeHelpers.PrepareConstrainedRegions();
    Object o = new Object();
    try
    {
        …
    }
    finally
    {
        …
    }
}
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)