Thread.EndCriticalRegion Yöntem

Tanım

Bir konağa yürütmenin, iş parçacığı durdurma veya işlenmeyen özel durumun etkilerinin geçerli görevle sınırlı olduğu bir kod bölgesi girmek üzere olduğunu bildirir.

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

Örnekler

Aşağıdaki örnek, bir kod bloğunu BeginCriticalRegion kritik ve kritik olmayan bölgelere bölmek için ve EndCriticalRegion yöntemlerinin kullanımını gösterir.

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

Açıklamalar

Microsoft SQL Server 2005 gibi ortak dil çalışma zamanının (CLR) konakları, kodun kritik ve kritik olmayan bölgelerindeki hatalar için farklı ilkeler oluşturabilir. Kritik bölge, iş parçacığı durdurma veya işlenmeyen özel durumun etkilerinin geçerli görevle sınırlı olmamasıdır. Buna karşılık, kodun kritik olmayan bir bölgesindeki bir durdurma veya hata yalnızca hatanın oluştuğu görevi etkiler.

Örneğin, kilit tutarken bellek ayırmaya çalışan bir görev düşünün. Bellek ayırma başarısız olursa, geçerli görevin durdurulması, etki alanında aynı kilidi bekleyen başka görevler olabileceğinden, kararlılığını AppDomainsağlamak için yeterli değildir. Geçerli görev sonlandırılırsa, diğer görevler kilitlenebilir.

Kritik bir bölgede bir hata oluştuğunda, konak, yürütmenin kararsız olma olasılığı olan bir durumda devam etme riskini almak yerine tamamını AppDomain kaldırmaya karar verebilir. Konağa kodunuzun kritik bir bölgeye girdiğini bildirmek için çağrısı yapın BeginCriticalRegion. Yürütme kritik olmayan bir kod bölgesine döndüğünde çağrısı EndCriticalRegion yapın.

SQL Server 2005 altında çalışan kodda bu yöntemin kullanılması, kodun en yüksek konak koruma düzeyinde çalıştırılmasını gerektirir.

Şunlara uygulanır

Ayrıca bkz.