Thread.EndThreadAffinity Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.