Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
{
…
}
}