Thread.BeginThreadAffinity Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.