Thread.BeginCriticalRegion Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Avertit un hôte que l’exécution est sur le point d’entrer une région de code dans laquelle les effets d’une exception abandonnée ou non gérée peuvent compromettre d’autres tâches dans le domaine de l’application.
public:
static void BeginCriticalRegion();
public static void BeginCriticalRegion();
static member BeginCriticalRegion : unit -> unit
Public Shared Sub BeginCriticalRegion ()
Exemples
L’exemple suivant illustre l’utilisation des méthodes et EndCriticalRegion l’utilisation BeginCriticalRegion d’un bloc de code en régions critiques et non critiques.
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
Remarques
Les hôtes du Common Language Runtime (CLR), tels que Microsoft SQL Server 2005, peuvent établir différentes stratégies pour les défaillances dans les régions critiques et non critiques du code. Une région critique est une région dans laquelle les effets d’un abandon de thread ou d’une exception non gérée peuvent ne pas être limités à la tâche actuelle. En revanche, une abandon ou une défaillance dans une région de code non critique affecte uniquement la tâche dans laquelle l’erreur se produit.
Par exemple, considérez une tâche qui tente d’allouer de la mémoire lors de la conservation d’un verrou. Si l’allocation de mémoire échoue, l’abandon de la tâche actuelle n’est pas suffisant pour garantir la stabilité du AppDomain, car il peut y avoir d’autres tâches dans le domaine en attente du même verrou. Si la tâche actuelle est arrêtée, d’autres tâches peuvent être bloquées.
Lorsqu’une défaillance se produit dans une région critique, l’hôte peut décider de décharger l’intégralité AppDomain au lieu de prendre le risque de poursuivre l’exécution dans un état potentiellement instable. Pour informer l’hôte que votre code entre dans une région critique, appelez BeginCriticalRegion. Appelez EndCriticalRegion quand l’exécution retourne à une région de code non critique.
L’utilisation de cette méthode dans le code qui s’exécute sous SQL Server 2005 nécessite que le code soit exécuté au niveau de protection hôte le plus élevé.