Thread.BeginThreadAffinity Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Benachrichtigt einen Host, dass verwalteter Code anweisungen ausführt, die von der Identität des aktuellen physischen Betriebssystemthreads abhängen.
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 ()
- Attribute
Ausnahmen
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Das folgende Beispiel veranschaulicht die Verwendung der BeginThreadAffinity Und EndThreadAffinity Methoden zum Benachrichtigen eines Hosts, dass ein Codeblock von der Identität eines physischen Betriebssystemthreads abhängt.
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
Hinweise
Einige Hosts der Common Language Runtime, z. B. Microsoft SQL Server 2005, stellen eine eigene Threadverwaltung bereit. Ein Host, der eine eigene Threadverwaltung bereitstellt, kann eine ausgeführte Aufgabe jederzeit von einem physischen Betriebssystemthread in einen anderen verschieben. Die meisten Vorgänge sind von diesem Wechsel nicht betroffen. Einige Aufgaben verfügen jedoch über Threadaffinität – d. h., sie hängen von der Identität eines physischen Betriebssystemthreads ab. Diese Aufgaben müssen den Host informieren, wenn er Code ausführt, der nicht gewechselt werden sollte.
Wenn Ihre Anwendung z. B. eine System-API aufruft, um eine Betriebssystemsperre zu erhalten, die threadaffin ist, z. B. eine Win32-CRITICAL_SECTION, müssen Sie vor dem Abrufen der Sperre und BeginThreadAffinity nach dem Freigeben der Sperre aufrufenEndThreadAffinity.
Wenn Sie diese Methode im Code verwenden, der unter SQL Server 2005 ausgeführt wird, muss der Code auf der höchsten Hostschutzebene ausgeführt werden.