Thread.EndThreadAffinity Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Notifica um host que o código gerido terminou de executar instruções que dependem da identidade do thread atual do sistema operativo físico.
public:
static void EndThreadAffinity();
public static void EndThreadAffinity();
[System.Security.SecurityCritical]
public static void EndThreadAffinity();
static member EndThreadAffinity : unit -> unit
[<System.Security.SecurityCritical>]
static member EndThreadAffinity : unit -> unit
Public Shared Sub EndThreadAffinity ()
- 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.