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 konağa yürütmenin, iş parçacığı durdurma veya işlenmeyen özel durumun etkilerinin uygulama etki alanındaki diğer görevleri tehlikeye atabileceği bir kod bölgesi girmek üzere olduğunu bildirir.
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ğ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.