Thread.BeginThreadAffinity Método

Definição

Notifica um host que o código gerido está prestes a executar instruções que dependem da identidade do thread físico atual do sistema operativo.

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

Exceções

O interlocutor não tem a permissão necessária.

Exemplos

O exemplo seguinte demonstra o uso dos BeginThreadAffinity métodos e EndThreadAffinity para notificar um host de que um bloco de código depende da identidade de um thread do sistema operativo físico.

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

Observações

Alguns hosts do runtime da linguagem comum, como o Microsoft SQL Server 2005, fornecem a sua própria gestão de threads. Um host que fornece a sua própria gestão de threads pode mover uma tarefa em execução de um thread físico do sistema operativo para outro a qualquer momento. A maioria das tarefas não é afetada por esta mudança. No entanto, algumas tarefas têm afinidade por threads – ou seja, dependem da identidade de um thread do sistema operativo físico. Estas tarefas devem informar o anfitrião quando executar código que não deve ser comutado.

Por exemplo, se a sua aplicação chamar uma API do sistema para adquirir um bloqueio do sistema operativo que tenha afinidade com threads, como um CRITICAL_SECTION Win32, deve chamar BeginThreadAffinity antes de adquirir o bloqueio e EndThreadAffinity depois de o libertar.

Usar este método em código que corre sob SQL Server 2005 exige que o código seja executado ao nível mais alto de proteção do host.

Aplica-se a

Ver também