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ütmek üzere olduğunu bir konağa bildirir.

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ğunun BeginThreadAffinity fiziksel bir işletim sistemi iş parçacığının kimliğine bağlı olduğunu bir konağa bildirmek için ve EndThreadAffinity yöntemlerinin kullanımını gösterir.

using System.Threading;

public class MyUtility
{
    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.
    }
}
open System.Threading

let 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 taşıyabilir. Görevlerin çoğu bu geçişten etkilenmez. Ancak bazı görevlerin iş parçacığı benzitesi vardır; diğer bir ifadeyle fiziksel işletim sistemi iş parçacığının kimliğine bağlıdır. Bu görevler, anahtarlanmaması gereken kodu yürütürken konağı bilgilendirmelidir.

Örneğin, uygulamanız Win32 CRITICAL_SECTION gibi iş parçacığı benzimi olan bir işletim sistemi kilidi almak için sistem API'sini çağırırsa, kilidi almadan önce ve BeginThreadAffinity kilidi serbest bıraktıktan sonra aramanız EndThreadAffinity gerekir.

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.

Şunlara uygulanır

Ayrıca bkz.