Thread.EndCriticalRegion Yöntem

Tanım

Bir ana bilgisayarı yürütmenin, iş parçacığı durdurma veya işlanmamış özel durum etkilerinin geçerli görevle sınırlı olduğu bir kod bölgesi girmek hakkında bilgi sağlar.

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

Örnekler

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

using namespace System::Threading;

public ref 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.
   }
};
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.
    }
}
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ı (CLR) konakları, kodun kritik ve kritik olmayan bölgelerindeki hatalar için farklı ilkeler kurabilir. Kritik bir bölge, bir iş parçacığı durdurma veya iş parçacıklı bir özel durumun etkilerinin geçerli görevle sınırlı olmadığını gösterir. Buna karşılık, kritik olmayan bir kod bölgesinde bir durdurma veya hata yalnızca hatanın oluştuğu görevi etkiler.

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

Kritik bir bölgede hata oluştuğunda konak, kararsız olabilecek bir durumda yürütmeyi devam ettiren riski almak yerine tamamını AppDomain kaldırmaya karar verebilir. Ana bilgisayarı kodunuzun kritik bir bölgeye girdiği konusunda bilgilendirmek için çağrısında BeginCriticalRegion bulundu. Yürütme, EndCriticalRegion kodun kritik olmayan bir bölgesi olduğunda çağrısı.

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

Şunlara uygulanır

Ayrıca bkz.