Thread.EndCriticalRegion Método

Definición

Notifica a un host que la ejecución está a punto de escribir una región de código en la que los efectos de una anulación de subproceso o una excepción no controlada están limitados a la tarea actual.

public:
 static void EndCriticalRegion();
public static void EndCriticalRegion();
static member EndCriticalRegion : unit -> unit
Public Shared Sub EndCriticalRegion ()

Ejemplos

En el ejemplo siguiente se muestra el uso de los BeginCriticalRegion métodos y EndCriticalRegion 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.
    }
}
open System.Threading

let 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.
Imports System.Threading

Public Class MyUtility
    Public Sub 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.
    End Sub
End Class

Comentarios

Los hosts de Common Language Runtime (CLR), como Microsoft SQL Server 2005, pueden establecer directivas diferentes para errores en regiones críticas y no críticas del código. Una región crítica es una en la que los efectos de una anulación de subproceso o una excepción no controlada podrían no limitarse a la tarea actual. Por el contrario, una anulación o un error en una región no crítica del código afecta solo a la tarea en la 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, la anulación de la tarea actual no es suficiente para garantizar la estabilidad de AppDomain, ya que puede haber otras tareas en el dominio esperando el mismo bloqueo. Si se finaliza la tarea actual, se podrían interbloquear otras tareas.

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

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

Se aplica a

Consulte también