Thread.BeginCriticalRegion Methode

Definitie

Hiermee wordt een host gewaarschuwd dat de uitvoering op het punt staat een codegebied in te voeren waarin de gevolgen van een thread afbreken of niet-verwerkte uitzonderingen andere taken in het toepassingsdomein in gevaar kunnen brengen.

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

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van de BeginCriticalRegion en EndCriticalRegion methoden om een codeblok te verdelen in kritieke en niet-kritieke regio's.

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

Opmerkingen

Hosts van de Common Language Runtime (CLR), zoals Microsoft SQL Server 2005, kunnen verschillende beleidsregels instellen voor fouten in kritieke en niet-kritieke regio's met code. Een kritieke regio is een regio waarin de effecten van een thread worden afgebroken of een niet-verwerkte uitzondering mogelijk niet beperkt zijn tot de huidige taak. Een afgebroken of storing in een niet-kritieke coderegio is daarentegen alleen van invloed op de taak waarin de fout optreedt.

Denk bijvoorbeeld aan een taak die probeert geheugen toe te wijzen tijdens het vasthouden van een vergrendeling. Als de geheugentoewijzing mislukt, is het afbreken van de huidige taak niet voldoende om de stabiliteit van de AppDomaintaak te garanderen, omdat er andere taken in het domein kunnen zijn die wachten op dezelfde vergrendeling. Als de huidige taak wordt beƫindigd, kunnen andere taken niet worden vergrendeld.

Wanneer er een fout optreedt in een kritieke regio, kan de host besluiten om het hele AppDomain bestand te verwijderen in plaats van het risico te nemen dat de uitvoering wordt voortgezet in een mogelijk instabiele status. Als u de host wilt informeren dat uw code een kritieke regio invoert, roept u BeginCriticalRegionaan. Aanroepen EndCriticalRegion wanneer de uitvoering terugkeert naar een niet-kritieke coderegio.

Als u deze methode gebruikt in code die wordt uitgevoerd onder SQL Server 2005, moet de code worden uitgevoerd op het hoogste hostbeveiligingsniveau.

Van toepassing op

Zie ook