Thread.EndCriticalRegion Metoda

Definice

Upozorní hostitele, že spuštění se chystá zadat oblast kódu, ve které jsou účinky přerušení vlákna nebo neošetřené výjimky omezeny na aktuální úlohu.

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

Příklady

Následující příklad ukazuje použití BeginCriticalRegion a EndCriticalRegion metody k rozdělení bloku kódu do kritických a nekritické oblasti.

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

Poznámky

Hostitelé modulu CLR (Common Language Runtime), jako je například Microsoft SQL Server 2005, můžou stanovit různé zásady selhání v kritických a nekritičtějších oblastech kódu. Kritická oblast je oblast, ve které nemusí být účinky přerušení vlákna nebo neošetřené výjimky omezeny na aktuální úlohu. Naproti tomu přerušení nebo selhání v nekritické oblasti kódu ovlivňuje pouze úlohu, ve které k chybě dochází.

Představte si například úlohu, která se pokusí přidělit paměť při držení zámku. Pokud přidělení paměti selže, přerušení aktuálního úkolu nestačí k zajištění stability AppDomainpaměti, protože v doméně mohou být další úkoly čekající na stejný zámek. Pokud je aktuální úkol ukončen, můžou být ostatní úkoly zablokované.

Pokud dojde k selhání v kritické oblasti, může se hostitel rozhodnout uvolnit celý AppDomain soubor, nikoli riskovat pokračování v provádění v potenciálně nestabilním stavu. Chcete-li informovat hostitele, že váš kód zadává kritickou oblast, zavolejte BeginCriticalRegion. Volání EndCriticalRegion , když se provádění vrátí do nekritické oblasti kódu.

Použití této metody v kódu, který běží pod SQL Server 2005 vyžaduje, aby byl kód spuštěn na nejvyšší úrovni ochrany hostitele.

Platí pro

Viz také