Aracılığıyla paylaş


Thread.BeginCriticalRegion Yöntem

Tanım

Bir ana bilgisayarı yürütmenin, bir iş parçacığı durdurma veya işlanmamış özel durumun etkilerinin uygulama etki alanındaki diğer görevleri tehlikeye atabilecek bir kod bölgesi girmekle ilgili olduğunu belirtir.

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

Örnekler

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

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ı.

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

Şunlara uygulanır

Ayrıca bkz.