Thread.EndCriticalRegion Méthode

Définition

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 d’abandon de thread ou d’exception non gérée sont limités à la tâche actuelle.

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

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é.

S’applique à

Voir aussi