Aracılığıyla paylaş


Thread.EndThreadAffinity Yöntem

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.