Thread.EndThreadAffinity 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ı olan yönergeleri yürütmeyi tamamladığını bildiren bir konağa bildirir.
public:
static void EndThreadAffinity();
public static void EndThreadAffinity ();
[System.Security.SecurityCritical]
public static void EndThreadAffinity ();
static member EndThreadAffinity : unit -> unit
[<System.Security.SecurityCritical>]
static member EndThreadAffinity : unit -> unit
Public Shared Sub EndThreadAffinity ()
- Öznitelikler
Özel durumlar
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki örnek, bir BeginThreadAffinity EndThreadAffinity ana bilgisayara bir kod bloğunun fiziksel bir işletim sistemi iş parçacığı kimliğine bağlı olduğunu bildirmek için ve 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, çalışan bir görevi bir fiziksel işletim sistemi iş parçacığından herhangi bir zamanda diğerine taşıyabilir. Çoğu görev bu geçiş işleminden etkilenmez. Ancak bazı görevlerin iş parçacığı benzeşimi vardır. diğer bir deyişle, fiziksel bir işletim sistemi iş parçacığının kimliğine bağlıdır. Bu görevler, geçiş olmaması gereken kodu yürüttüğünüzde Konağı bilgilendirmelidir.
Örneğin, uygulamanız bir Win32 CRITICAL_SECTION gibi iş parçacığı benzeşimine sahip bir işletim sistemi kilidi almak için bir sistem API 'SI çağırırsa, BeginThreadAffinity kilidi almadan önce ve EndThreadAffinity kilidi serbest bırakarak çağırmanız gerekir.
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.