Thread.BeginCriticalRegion Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.