Thread.EndCriticalRegion Metódus

Definíció

Értesíti a gazdagépet, hogy a végrehajtás olyan kódterületet ír be, amelyben a szál megszakítása vagy a kezeletlen kivétel hatása az aktuális tevékenységre korlátozódik.

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

Példák

Az alábbi példa bemutatja a BeginCriticalRegion kódblokk kritikus és nem kritikus régiókra való felosztására szolgáló módszereket és EndCriticalRegion módszereket.

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

Megjegyzések

A közös nyelvi futtatókörnyezet (CLR) gazdagépei, például a Microsoft SQL Server 2005, különböző szabályzatokat hozhatnak létre a kód kritikus és nem kritikus régióiban előforduló hibákhoz. Kritikus régió az, amelyben a szál megszakadásának vagy a kezeletlen kivételnek a hatása nem korlátozódhat az aktuális tevékenységre. Ezzel szemben egy nem kritikus kódterület megszakítása vagy hibája csak azt a feladatot érinti, amelyben a hiba történik.

Vegyük például azt a feladatot, amely zárolás közben próbál memóriát lefoglalni. Ha a memóriafoglalás sikertelen, az aktuális tevékenység megszakítása nem elegendő a AppDomainstabilitás biztosításához, mert a tartományban más feladatok is várakozhatnak ugyanahhoz a zároláshoz. Ha az aktuális tevékenység leáll, más tevékenységek holtpontra kerülhetnek.

Ha egy kritikus régióban hiba történik, előfordulhat, hogy a gazdagép úgy dönt, hogy a teljes AppDomain területet kiüríti ahelyett, hogy kockáztatná a végrehajtás instabil állapotban való folytatását. Ha tájékoztatni szeretné a gazdagépet arról, hogy a kód kritikus régiót ír be, hívja meg a következőt BeginCriticalRegion: Hívás EndCriticalRegion , amikor a végrehajtás visszakerül egy nem kritikus kódterületre.

A 2005-ös SQL Server alatt futó kódban ezt a metódust használva a kódot a legmagasabb gazdagépvédelmi szinten kell futtatni.

A következőre érvényes:

Lásd még