Thread.EndCriticalRegion Metod

Definition

Meddelar en värd att körningen är på väg att ange en kodregion där effekterna av en tråd avbryts eller ett ohanterat undantag begränsas till den aktuella aktiviteten.

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

Exempel

I följande exempel visas hur BeginCriticalRegion metoderna och EndCriticalRegion används för att dela upp ett kodblock i kritiska och icke-kritiska regioner.

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

Kommentarer

Värdar för CLR (Common Language Runtime), till exempel Microsoft SQL Server 2005, kan upprätta olika principer för fel i kritiska och icke-kritiska kodregioner. En kritisk region är en region där effekterna av en tråd avbryts eller ett ohanterat undantag kanske inte begränsas till den aktuella aktiviteten. Däremot påverkar ett avbrott eller fel i en icke-kritisk kodregion endast den uppgift där felet inträffar.

Tänk dig till exempel en uppgift som försöker allokera minne medan du håller ett lås. Om minnesallokeringen misslyckas räcker det inte att avbryta den aktuella aktiviteten för att säkerställa stabiliteten i AppDomain, eftersom det kan finnas andra aktiviteter i domänen som väntar på samma lås. Om den aktuella aktiviteten avslutas kan andra aktiviteter vara låsta.

När ett fel inträffar i en kritisk region kan värden välja att ta bort hela AppDomain i stället för att riskera att fortsätta körningen i ett potentiellt instabilt tillstånd. Om du vill informera värden om att koden anger en kritisk region anropar du BeginCriticalRegion. Anropa EndCriticalRegion när körningen återgår till en icke-kritisk kodregion.

Om du använder den här metoden i kod som körs under SQL Server 2005 måste koden köras på den högsta värdskyddsnivån.

Gäller för

Se även