Thread.BeginThreadAffinity Methode

Definitie

Hiermee wordt een host gewaarschuwd dat beheerde code instructies gaat uitvoeren die afhankelijk zijn van de identiteit van de huidige fysieke besturingssysteemthread.

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 ()
Kenmerken

Uitzonderingen

De beller heeft niet de vereiste machtiging.

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van de en EndThreadAffinity methoden om een host op de BeginThreadAffinity hoogte te stellen dat een codeblok afhankelijk is van de identiteit van een fysieke besturingssysteemthread.

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

Opmerkingen

Sommige hosts van de algemene taalruntime, zoals Microsoft SQL Server 2005, bieden hun eigen threadbeheer. Een host die een eigen threadbeheer biedt, kan op elk gewenst moment een uitvoeringstaak van de ene fysieke besturingssysteemthread naar een andere verplaatsen. De meeste taken worden niet beïnvloed door deze overstap. Sommige taken hebben echter threadaffiniteit, dat wil gezegd, ze zijn afhankelijk van de identiteit van een fysieke besturingssysteemthread. Deze taken moeten de host informeren wanneer ze code uitvoeren die niet mag worden gewijzigd.

Als uw toepassing bijvoorbeeld een systeem-API aanroept om een vergrendeling van het besturingssysteem te verkrijgen die threadaffiniteit heeft, zoals een Win32-CRITICAL_SECTION, moet u aanroepen BeginThreadAffinity voordat u de vergrendeling verkrijgt en EndThreadAffinity nadat de vergrendeling is vrijgegeven.

Als u deze methode gebruikt in code die wordt uitgevoerd onder SQL Server 2005, moet de code worden uitgevoerd op het hoogste hostbeveiligingsniveau.

Van toepassing op

Zie ook