Thread.BeginThreadAffinity 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.
Yönetilen kodun geçerli fiziksel işletim sistemi iş parçacığının kimliğine bağlı yönergeleri yürütmekle ilgili olduğunu bir ana bilgisayarla bilgi sahibine iletir.
public:
static void BeginThreadAffinity();
public static void BeginThreadAffinity ();
[System.Security.SecurityCritical]
public static void BeginThreadAffinity ();
static member BeginThreadAffinity : unit -> unit
[<System.Security.SecurityCritical>]
static member BeginThreadAffinity : unit -> unit
Public Shared Sub BeginThreadAffinity ()
- Öznitelikler
Özel durumlar
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki örnek, bir kod bloğun fiziksel işletim sistemi iş parçacığının kimliğine bağlı olduğunu bir kontaya bildirmek için ve BeginThreadAffinity EndThreadAffinity yöntemlerinin kullanımını gösterir.
using namespace System::Threading;
using namespace System::Security::Permissions;
public ref class MyUtility
{
public:
[SecurityPermissionAttribute(SecurityAction::Demand, ControlThread=true)]
void PerformTask()
{
// Code that does not have thread affinity goes here.
//
Thread::BeginThreadAffinity();
//
// Code that has thread affinity goes here.
//
Thread::EndThreadAffinity();
//
// More code that does not have thread affinity.
}
};
using System.Threading;
using System.Security.Permissions;
[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
public class MyUtility
{
[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
public void PerformTask()
{
// Code that does not have thread affinity goes here.
//
Thread.BeginThreadAffinity();
//
// Code that has thread affinity goes here.
//
Thread.EndThreadAffinity();
//
// More code that does not have thread affinity.
}
}
Imports System.Threading
Imports System.Security.Permissions
<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.ControlThread)> _
Friend Class MyUtility
<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.ControlThread)> _
Public Sub PerformTask()
' Code that does not have thread affinity goes here.
'
Thread.BeginThreadAffinity()
'
' Code that has thread affinity goes here.
'
Thread.EndThreadAffinity()
'
' More code that does not have thread affinity.
End Sub
End Class
Açıklamalar
Microsoft SQL Server 2005 gibi ortak dil çalışma zamanının bazı konakları kendi iş parçacığı yönetimini sağlar. Kendi iş parçacığı yönetimini sağlayan bir konak, yürütme görevini herhangi bir zamanda bir fiziksel işletim sistemi iş parçacığından diğerine hareket ettirebilirsiniz. Çoğu görev bu geçişten etkilenmez. Ancak, bazı görevlerin iş parçacığı benzeşmi vardır; diğer bir ifade, fiziksel bir işletim sistemi iş parçacığının kimliğine bağlıdır. Bu görevler, değiştirilmeleri gereken kodu yürütürken ana bilgisayarı bilgilendirmeli.
Örneğin, uygulamanız Win32 CRITICAL_SECTION gibi iş parçacığı benzeşimi olan bir işletim sistemi kilidi almak için bir sistem API'si çağırıyorsa, kilidi edinmeden önce ve kilidi serbest bırakarak önce çağrısı BeginThreadAffinity EndThreadAffinity gerekir.
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.