Thread.EndCriticalRegion Methode

Definition

Benachrichtigt einen Host, dass die Ausführung einen Codebereich eingibt, in dem die Auswirkungen einer Threadabbruch- oder unbehandelten Ausnahme auf die aktuelle Aufgabe beschränkt sind.

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

Beispiele

Im folgenden Beispiel wird die Verwendung der BeginCriticalRegion Codeblocks und EndCriticalRegion Methoden in kritische und nicht kritische Regionen veranschaulicht.

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

Hinweise

Hosts der Common Language Runtime (CLR), z. B. Microsoft SQL Server 2005, können unterschiedliche Richtlinien für Fehler in kritischen und nicht kritischen Codebereichen einrichten. Ein kritischer Bereich ist eine Region, in der die Auswirkungen eines Threadabbruchs oder einer unbehandelten Ausnahme möglicherweise nicht auf den aktuellen Vorgang beschränkt sind. Im Gegensatz dazu wirkt sich ein Abbruch oder Fehler in einem nicht kritischen Codebereich nur auf die Aufgabe aus, in der der Fehler auftritt.

Betrachten Sie z. B. eine Aufgabe, die versucht, Arbeitsspeicher zuzuweisen, während sie eine Sperre halten. Wenn die Speicherzuweisung fehlschlägt, reicht das Abbrechen des aktuellen Vorgangs nicht aus, um die Stabilität des AppDomainVorgangs sicherzustellen, da in der Domäne andere Aufgaben vorhanden sein können, die auf dieselbe Sperre warten. Wenn der aktuelle Vorgang beendet wird, können andere Vorgänge inaktiviert werden.

Wenn ein Fehler in einem kritischen Bereich auftritt, kann der Host entscheiden, das gesamte AppDomain Entladen zu entladen, anstatt das Risiko zu übernehmen, dass die Ausführung in einem potenziell instabilen Zustand fortgesetzt wird. Rufen Sie auf BeginCriticalRegion, um den Host darüber zu informieren, dass Ihr Code einen kritischen Bereich eingibt. Aufrufen EndCriticalRegion , wenn die Ausführung zu einem nicht kritischen Codebereich zurückkehrt.

Wenn Sie diese Methode im Code verwenden, der unter SQL Server 2005 ausgeführt wird, muss der Code auf der höchsten Hostschutzebene ausgeführt werden.

Gilt für:

Weitere Informationen