Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Thread.BeginCriticalRegion ()

 

Publicado: octubre de 2016

Notifica a un host que la ejecución está a punto de entrar en una región del código donde los efectos de una anulación del subproceso o de una excepción no controlada podrían constituir un riesgo para otras tareas del dominio de aplicaciones.

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

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

Hosts de common language runtime (CLR), como Microsoft SQL Server 2005, pueden establecer directivas diferentes para los errores de las regiones críticas y no críticas del código. Una región crítica es aquella en la que los efectos de una anulación del subproceso o una excepción no controlada no estén limitados a la tarea actual. Por el contrario, una anulación o un error en una región no crítica del código afecta sólo a la tarea que se produce el error.

Por ejemplo, considere una tarea que intenta asignar memoria mientras mantiene un bloqueo. Si se produce un error en la asignación de memoria, anular la tarea actual no es suficiente para garantizar la estabilidad de la AppDomain, porque puede haber otras tareas en el dominio esperando el mismo bloqueo. Si finaliza la tarea actual, otras tareas podrían sufrir un interbloqueo.

Cuando se produce un error en una región crítica, el host puede optar por descargar todo el AppDomain en lugar de correr el riesgo de continuar la ejecución en un estado potencialmente inestable. Para informar al host que el código está entrando en una región crítica, llame a BeginCriticalRegion. Llame a EndCriticalRegion cuando se devuelve la ejecución a una región no crítica del código.

Con este método en código que se ejecuta SQL Server 2005 requiere que el código que se ejecutará en el nivel más alto de protección de host.

En el ejemplo siguiente se muestra el uso de la BeginCriticalRegion y EndCriticalRegion métodos para dividir un bloque de código en regiones críticas y no críticas.

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
Disponible desde 2.0
Volver al principio
Mostrar: