illegalPrepareConstrainedRegion MDA

Note

Questo articolo è specifico per .NET Framework. Non si applica alle implementazioni più recenti di .NET, tra cui .NET 6 e versioni successive.

L'assistente illegalPrepareConstrainedRegion al debug gestito viene attivato quando una RuntimeHelpers.PrepareConstrainedRegions chiamata al metodo non precede immediatamente l'istruzione try del gestore eccezioni. Questa restrizione è a livello MSIL, pertanto è consentito avere un'origine che non genera codice tra la chiamata e , ad esempio i trycommenti.

Symptoms

Un'area di esecuzione vincolata che non viene mai considerata come tale, ma come un semplice blocco di gestione delle eccezioni (finally o catch). Di conseguenza, l'area non viene eseguita in caso di una condizione di memoria insufficiente o di un'interruzione del thread.

Cause

Il modello di preparazione per un cer non viene seguito correttamente. Si tratta di un evento di errore. La PrepareConstrainedRegions chiamata al metodo usata per contrassegnare i gestori di eccezioni come introduzione di un cer nei relativi//catchfault/finallyfilter blocchi deve essere usata immediatamente prima dell'istruzione .try

Risoluzione

Assicurarsi che la chiamata a PrepareConstrainedRegions venga eseguita immediatamente prima dell'istruzione try .

Effetto sul runtime

Questo assistente al debug gestito non ha alcun effetto su CLR.

Risultato

L'assistente al debug gestito visualizza il nome del metodo che chiama il PrepareConstrainedRegions metodo , l'offset MSIL e un messaggio che indica che la chiamata non precede immediatamente l'inizio del blocco try.

Configuration

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

Example

Nell'esempio di codice seguente viene illustrato il modello che determina l'attivazione di questo assistente al debug gestito.

void MethodWithInvalidPCR()
{
    RuntimeHelpers.PrepareConstrainedRegions();
    Object o = new Object();
    try
    {
        …
    }
    finally
    {
        …
    }
}

Vedere anche