Thread.BeginCriticalRegion Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.