BeginCriticalRegion Metodo
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Thread.BeginCriticalRegion ()

 

Notifica a un host che l'esecuzione sta per entrare in un'area di codice in cui gli effetti di un'interruzione del thread o di un'eccezione non gestita possono rappresentare un rischio per altre attività nel dominio applicazione.

Spazio dei nomi:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public static void BeginCriticalRegion()

Gli host di common language runtime (CLR), ad esempio Microsoft SQL Server 2005 possono stabilire criteri diversi per gli errori nelle aree critiche e non critiche del codice.Un'area critica è uno in cui gli effetti dell'interruzione di un thread o un'eccezione non gestita potrebbero non essere limitati all'attività corrente.Al contrario, un'interruzione o un errore in un'area non critica del codice interessa solo l'attività in cui si verifica l'errore.

Si consideri ad esempio un'attività che tenta di allocare memoria quando un blocco.Se l'allocazione di memoria ha esito negativo, interrompere l'attività corrente non è sufficiente per garantire la stabilità del AppDomain, in quanto possono essere altre attività nel dominio in attesa del blocco stesso.Se l'attività corrente viene terminata, altre attività può verificarsi il deadlock.

Quando si verifica un errore in un'area critica, l'host può decidere di scaricare l'intero AppDomain anziché rischiare di continuare l'esecuzione in uno stato potenzialmente instabile.Per informare l'host che il codice sta entrando in un'area critica, chiamare BeginCriticalRegion.Chiamare EndCriticalRegion quando l'esecuzione torna in un'area non critica del codice.

Utilizzando questo metodo nel codice in esecuzione in SQL Server 2005 richiede che il codice da eseguire a livello di protezione più elevato di host.

Nell'esempio seguente viene illustrato l'utilizzo del BeginCriticalRegion e EndCriticalRegion metodi per suddividere un blocco di codice in aree critiche e non critiche.

using System.Threading;

public class MyUtility
{
    public void PerformTask()
    {
        // Code in this region can be aborted without affecting
        // other tasks.
        //
        Thread.BeginCriticalRegion();
        //
        // The host might decide to unload the application domain
        // if a failure occurs in this code region.
        //
        Thread.EndCriticalRegion();
        //
        // Code in this region can be aborted without affecting
        // other tasks.
    }
}

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra:
© 2016 Microsoft