Thread.BeginThreadAffinity Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Avertit un hôte que le code managé est sur le point d’exécuter des instructions qui dépendent de l’identité du thread de système d’exploitation physique actuel.
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 ()
- Attributs
Exceptions
L’appelant n’a pas l’autorisation requise.
Exemples
L’exemple suivant illustre l’utilisation des méthodes et EndThreadAffinity l’utilisation BeginThreadAffinity d’un hôte pour informer un hôte qu’un bloc de code dépend de l’identité d’un thread de système d’exploitation physique.
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
Remarques
Certains hôtes du Common Language Runtime, tels que Microsoft SQL Server 2005, fournissent leur propre gestion des threads. Un hôte qui fournit sa propre gestion des threads peut déplacer une tâche en cours d’exécution d’un thread de système d’exploitation physique vers un autre à tout moment. La plupart des tâches ne sont pas affectées par ce changement. Toutefois, certaines tâches ont une affinité de thread , autrement dit, elles dépendent de l’identité d’un thread de système d’exploitation physique. Ces tâches doivent informer l’hôte lorsqu’ils exécutent du code qui ne doit pas être basculé.
Par exemple, si votre application appelle une API système pour acquérir un verrou de système d’exploitation qui a une affinité de thread, tel qu’un CRITICAL_SECTION Win32, vous devez appeler BeginThreadAffinity avant d’acquérir le verrou et EndThreadAffinity après avoir libéré le verrou.
L’utilisation de cette méthode dans le code qui s’exécute sous SQL Server 2005 nécessite que le code soit exécuté au niveau de protection hôte le plus élevé.