Thread.BeginThreadAffinity Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Meddelar en värd att hanterad kod är på väg att köra instruktioner som är beroende av identiteten för den aktuella fysiska operativsystemtråden.
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 ()
- Attribut
Undantag
Anroparen har inte den behörighet som krävs.
Exempel
I följande exempel visas hur BeginThreadAffinity metoderna och EndThreadAffinity används för att meddela en värd att ett kodblock är beroende av identiteten för en fysisk operativsystemtråd.
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
Kommentarer
Vissa värdar för den vanliga språkkörningen, till exempel Microsoft SQL Server 2005, tillhandahåller sin egen trådhantering. En värd som tillhandahåller en egen trådhantering kan när som helst flytta en körningsuppgift från en fysisk operativsystemtråd till en annan. De flesta aktiviteter påverkas inte av den här växlingen. Vissa uppgifter har dock trådtillhörighet – det vill sägs att de är beroende av identiteten för en fysisk operativsystemtråd. Dessa uppgifter måste informera värden när de kör kod som inte ska växlas.
Om ditt program till exempel anropar ett system-API för att hämta ett operativsystemlås som har trådtillhörighet, till exempel en Win32-CRITICAL_SECTION, måste du anropa BeginThreadAffinity innan du hämtar låset och EndThreadAffinity när du har släppt låset.
Om du använder den här metoden i kod som körs under SQL Server 2005 måste koden köras på den högsta värdskyddsnivån.