Thread.BeginThreadAffinity Yöntem

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.