Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

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 di codice critiche e non critiche. Per area critica si intende un'area in cui gli effetti dell'interruzione di un thread o di un'eccezione non gestita possono non limitarsi all'attività corrente. Al contrario, un'interruzione o un errore in un'area di codice non critica ha effetto unicamente sull'attività in cui si verifica l'errore.

Si prenda in considerazione ad esempio un'attività che tenta di allocare memoria mentre detiene un blocco. Se l'allocazione di memoria non riesce, non è sufficiente interrompere l'attività corrente per garantire la stabilità dell'interfaccia AppDomain, poiché nel dominio vi possono essere altre attività in attesa dello stesso blocco. Se l'attività corrente viene terminata, può verificarsi il deadlock di altre attività.

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

L'utilizzo di questo metodo nel codice eseguito in SQL Server 2005 richiede l'esecuzione del codice al livello di protezione host più alto.

NotaNota

L'attributo HostProtectionAttribute applicato a questo tipo di membro dispone del seguente valore per la proprietà Resources: Synchronization | ExternalThreading. L'oggetto HostProtectionAttribute non influisce sulle applicazioni desktop, che in genere vengono avviate facendo doppio clic sull'icona, digitando un comando oppure immettendo un URL in un browser. Per ulteriori informazioni, vedere la classe HostProtectionAttribute o programmazione per SQL Server e attributi di protezione host.

Nell'esempio riportato di seguito viene illustrato come utilizzare i metodi BeginCriticalRegion e EndCriticalRegion 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

Supportato in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.