Thread.EndCriticalRegion Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
É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.