Thread.EndThreadAffinity Metode

Definisi

Memberi tahu host bahwa kode terkelola telah selesai menjalankan instruksi yang bergantung pada identitas utas sistem operasi fisik saat ini.

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

Pengecualian

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh berikut menunjukkan penggunaan BeginThreadAffinity metode dan EndThreadAffinity untuk memberi tahu host bahwa blok kode tergantung pada identitas utas sistem operasi fisik.

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

Keterangan

Beberapa host runtime bahasa umum, seperti Microsoft SQL Server 2005, menyediakan manajemen utas mereka sendiri. Host yang menyediakan manajemen utasnya sendiri dapat memindahkan tugas yang dijalankan dari satu utas sistem operasi fisik ke utas lainnya kapan saja. Sebagian besar tugas tidak terpengaruh oleh pengalihan ini. Namun, beberapa tugas memiliki afinitas utas - yaitu, mereka bergantung pada identitas utas sistem operasi fisik. Tugas-tugas ini harus memberi tahu host ketika mereka menjalankan kode yang seharusnya tidak dialihkan.

Misalnya, jika aplikasi Anda memanggil API sistem untuk memperoleh kunci sistem operasi yang memiliki afinitas utas, seperti win32 CRITICAL_SECTION, Anda harus memanggil BeginThreadAffinity sebelum memperoleh kunci, dan EndThreadAffinity setelah melepaskan kunci.

Menggunakan metode ini dalam kode yang berjalan di bawah SQL Server 2005 mengharuskan kode dijalankan pada tingkat perlindungan host tertinggi.

Berlaku untuk

Lihat juga