Compartir a través de


Thread.BeginCriticalRegion Método

Definición

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.

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

Ejemplos

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

using namespace System::Threading;

public ref 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.
   }
};
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.
    }
}
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 de código críticas y no críticas. Una región crítica es en la que es posible que los efectos de una anulación de subproceso o una excepción no controlada no se limiten a la tarea actual. Por el contrario, una anulación o un error en una región de código no crítica solo afecta 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, anular la tarea actual no es suficiente para garantizar la estabilidad de , ya que puede haber otras tareas en el dominio esperando AppDomain el mismo bloqueo. Si finaliza la tarea actual, otras tareas podrían estar interbloqueadas.

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

El uso de este método en 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