ThreadPool.UnsafeRegisterWaitForSingleObject 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.
Mendaftarkan delegasi untuk WaitHandlemenunggu , tetapi tidak menyebarluaskan tumpukan panggilan ke utas pekerja.
Overload
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan TimeSpan nilai untuk waktu habis. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Mendaftarkan delegasi untuk WaitHandlemenunggu , menggunakan bilangan bulat masuk 32-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan bilangan bulat yang ditandatangani 64-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan bilangan bulat yang tidak ditandatangani 32-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan TimeSpan nilai untuk waktu habis. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, TimeSpan timeout, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, TimeSpan timeout, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, TimeSpan timeout, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, TimeSpan timeout, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, TimeSpan timeout, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, timeout As TimeSpan, executeOnlyOnce As Boolean) As RegisteredWaitHandle
Parameter
- waitObject
- WaitHandle
Untuk WaitHandle mendaftar. WaitHandle Gunakan selain Mutex.
- callBack
- WaitOrTimerCallback
Delegasi untuk memanggil saat waitObject
parameter diberi sinyal.
- state
- Object
Objek yang diteruskan ke delegasi.
- timeout
- TimeSpan
Waktu habis diwakili oleh TimeSpan. Jika timeout
adalah 0 (nol), fungsi menguji status objek dan segera kembali. Jika timeout
adalah -1, interval waktu habis fungsi tidak pernah berlalu.
- executeOnlyOnce
- Boolean
true
untuk menunjukkan bahwa utas tidak akan lagi menunggu parameter waitObject
setelah delegasi dipanggil; false
untuk menunjukkan bahwa timer diatur ulang setiap kali operasi tunggu selesai sampai penantian tidak terdaftar.
Mengembalikan
Objek RegisteredWaitHandle yang dapat digunakan untuk membatalkan operasi tunggu terdaftar.
- Atribut
Pengecualian
Parameternya timeout
kurang dari -1.
Parameter timeout
lebih besar dari Int32.MaxValue.
Pemanggil tidak memiliki izin yang diperlukan.
Keterangan
RegisterWaitForSingleObject Tidak seperti metode , UnsafeRegisterWaitForSingleObject tidak menyebarluaskan tumpukan panggilan ke utas pekerja. Ini memungkinkan kode untuk kehilangan tumpukan panggilan dan dengan demikian untuk meningkatkan hak istimewa keamanannya.
Perhatian
Menggunakan UnsafeRegisterWaitForSingleObject secara tidak sengaja dapat membuka lubang keamanan. Keamanan akses kode mendasarkan pemeriksaan izinnya pada izin semua pemanggil pada tumpukan. Ketika pekerjaan diantrekan pada utas kumpulan utas menggunakan UnsafeRegisterWaitForSingleObject, tumpukan utas kumpulan utas tidak akan memiliki konteks pemanggil yang sebenarnya. Kode berbahaya mungkin dapat mengeksploitasi ini untuk menghindari pemeriksaan izin.
Mutex Menggunakan untuk waitObject
tidak memberikan pengecualian bersama untuk panggilan balik karena Windows API yang mendasar menggunakan bendera defaultWT_EXECUTEDEFAULT
, sehingga setiap panggilan balik dikirim pada utas kumpulan utas terpisah.
Ketika Anda selesai menggunakan RegisteredWaitHandle yang dikembalikan oleh metode ini, panggil metodenya RegisteredWaitHandle.Unregister untuk merilis referensi ke handel tunggu. Kami menyarankan agar Anda selalu memanggil RegisteredWaitHandle.Unregister metode , bahkan jika Anda menentukan true
untuk executeOnlyOnce
. Pengumpulan sampah bekerja lebih efisien jika Anda memanggil RegisteredWaitHandle.Unregister metode alih-alih tergantung pada finalizer handel tunggu yang terdaftar.
Lihat juga
Berlaku untuk
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
Mendaftarkan delegasi untuk WaitHandlemenunggu , menggunakan bilangan bulat masuk 32-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As Integer, executeOnlyOnce As Boolean) As RegisteredWaitHandle
Parameter
- waitObject
- WaitHandle
Untuk WaitHandle mendaftar. WaitHandle Gunakan selain Mutex.
- callBack
- WaitOrTimerCallback
Delegasi untuk memanggil saat waitObject
parameter diberi sinyal.
- state
- Object
Objek yang diteruskan ke delegasi.
- millisecondsTimeOutInterval
- Int32
Waktu habis dalam milidetik.
millisecondsTimeOutInterval
Jika parameter adalah 0 (nol), fungsi akan menguji status objek dan segera kembali. Jika millisecondsTimeOutInterval
adalah -1, interval waktu habis fungsi tidak pernah berlalu.
- executeOnlyOnce
- Boolean
true
untuk menunjukkan bahwa utas tidak akan lagi menunggu parameter waitObject
setelah delegasi dipanggil; false
untuk menunjukkan bahwa timer diatur ulang setiap kali operasi tunggu selesai sampai penantian tidak terdaftar.
Mengembalikan
Objek RegisteredWaitHandle yang dapat digunakan untuk membatalkan operasi tunggu terdaftar.
- Atribut
Pengecualian
Parameternya millisecondsTimeOutInterval
kurang dari -1.
Pemanggil tidak memiliki izin yang diperlukan.
Keterangan
RegisterWaitForSingleObject Tidak seperti metode , UnsafeRegisterWaitForSingleObject tidak menyebarluaskan tumpukan panggilan ke utas pekerja. Ini memungkinkan kode untuk kehilangan tumpukan panggilan dan dengan demikian untuk meningkatkan hak istimewa keamanannya.
Perhatian
Menggunakan UnsafeRegisterWaitForSingleObject secara tidak sengaja dapat membuka lubang keamanan. Keamanan akses kode mendasarkan pemeriksaan izinnya pada izin semua pemanggil pada tumpukan. Ketika pekerjaan diantrekan pada utas kumpulan utas menggunakan UnsafeRegisterWaitForSingleObject, tumpukan utas kumpulan utas tidak akan memiliki konteks pemanggil yang sebenarnya. Kode berbahaya mungkin dapat mengeksploitasi ini untuk menghindari pemeriksaan izin.
Mutex Menggunakan untuk waitObject
tidak memberikan pengecualian bersama untuk panggilan balik karena Windows API yang mendasar menggunakan bendera defaultWT_EXECUTEDEFAULT
, sehingga setiap panggilan balik dikirim pada utas kumpulan utas terpisah.
Ketika Anda selesai menggunakan RegisteredWaitHandle yang dikembalikan oleh metode ini, panggil metodenya RegisteredWaitHandle.Unregister untuk merilis referensi ke handel tunggu. Kami menyarankan agar Anda selalu memanggil RegisteredWaitHandle.Unregister metode , bahkan jika Anda menentukan true
untuk executeOnlyOnce
. Pengumpulan sampah bekerja lebih efisien jika Anda memanggil RegisteredWaitHandle.Unregister metode alih-alih tergantung pada finalizer handel tunggu yang terdaftar.
Lihat juga
Berlaku untuk
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan bilangan bulat yang ditandatangani 64-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As Long, executeOnlyOnce As Boolean) As RegisteredWaitHandle
Parameter
- waitObject
- WaitHandle
Untuk WaitHandle mendaftar. WaitHandle Gunakan selain Mutex.
- callBack
- WaitOrTimerCallback
Delegasi untuk memanggil saat waitObject
parameter diberi sinyal.
- state
- Object
Objek yang diteruskan ke delegasi.
- millisecondsTimeOutInterval
- Int64
Waktu habis dalam milidetik.
millisecondsTimeOutInterval
Jika parameter adalah 0 (nol), fungsi akan menguji status objek dan segera kembali. Jika millisecondsTimeOutInterval
adalah -1, interval waktu habis fungsi tidak pernah berlalu.
- executeOnlyOnce
- Boolean
true
untuk menunjukkan bahwa utas tidak akan lagi menunggu parameter waitObject
setelah delegasi dipanggil; false
untuk menunjukkan bahwa timer diatur ulang setiap kali operasi tunggu selesai sampai penantian tidak terdaftar.
Mengembalikan
Objek RegisteredWaitHandle yang dapat digunakan untuk membatalkan operasi tunggu terdaftar.
- Atribut
Pengecualian
Parameternya millisecondsTimeOutInterval
kurang dari -1.
Pemanggil tidak memiliki izin yang diperlukan.
Keterangan
RegisterWaitForSingleObject Tidak seperti metode , UnsafeRegisterWaitForSingleObject tidak menyebarluaskan tumpukan panggilan ke utas pekerja. Ini memungkinkan kode untuk kehilangan tumpukan panggilan dan dengan demikian untuk meningkatkan hak istimewa keamanannya.
Perhatian
Menggunakan UnsafeRegisterWaitForSingleObject secara tidak sengaja dapat membuka lubang keamanan. Keamanan akses kode mendasarkan pemeriksaan izinnya pada izin semua pemanggil pada tumpukan. Ketika pekerjaan diantrekan pada utas kumpulan utas menggunakan UnsafeRegisterWaitForSingleObject, tumpukan utas kumpulan utas tidak akan memiliki konteks pemanggil yang sebenarnya. Kode berbahaya mungkin dapat mengeksploitasi ini untuk menghindari pemeriksaan izin.
Mutex Menggunakan untuk waitObject
tidak memberikan pengecualian bersama untuk panggilan balik karena Windows API yang mendasar menggunakan bendera defaultWT_EXECUTEDEFAULT
, sehingga setiap panggilan balik dikirim pada utas kumpulan utas terpisah.
Ketika Anda selesai menggunakan RegisteredWaitHandle yang dikembalikan oleh metode ini, panggil metodenya RegisteredWaitHandle.Unregister untuk merilis referensi ke handel tunggu. Kami menyarankan agar Anda selalu memanggil RegisteredWaitHandle.Unregister metode , bahkan jika Anda menentukan true
untuk executeOnlyOnce
. Pengumpulan sampah bekerja lebih efisien jika Anda memanggil RegisteredWaitHandle.Unregister metode alih-alih tergantung pada finalizer handel tunggu yang terdaftar.
Lihat juga
Berlaku untuk
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
- Sumber:
- ThreadPoolWorkQueue.cs
Penting
API ini bukan kompatibel CLS.
Mendaftarkan delegasi untuk WaitHandlemenunggu , menentukan bilangan bulat yang tidak ditandatangani 32-bit untuk waktu habis dalam milidetik. Metode ini tidak menyebarluaskan tumpukan panggilan ke utas pekerja.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, System::UInt32 millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
[<System.CLSCompliant(false)>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
Public Shared Function UnsafeRegisterWaitForSingleObject (waitObject As WaitHandle, callBack As WaitOrTimerCallback, state As Object, millisecondsTimeOutInterval As UInteger, executeOnlyOnce As Boolean) As RegisteredWaitHandle
Parameter
- waitObject
- WaitHandle
Untuk WaitHandle mendaftar. WaitHandle Gunakan selain Mutex.
- callBack
- WaitOrTimerCallback
Delegasi untuk memanggil saat waitObject
parameter diberi sinyal.
- state
- Object
Objek yang diteruskan ke delegasi.
- millisecondsTimeOutInterval
- UInt32
Waktu habis dalam milidetik.
millisecondsTimeOutInterval
Jika parameter adalah 0 (nol), fungsi akan menguji status objek dan segera kembali. Jika millisecondsTimeOutInterval
adalah -1, interval waktu habis fungsi tidak pernah berlalu.
- executeOnlyOnce
- Boolean
true
untuk menunjukkan bahwa utas tidak akan lagi menunggu parameter waitObject
setelah delegasi dipanggil; false
untuk menunjukkan bahwa timer diatur ulang setiap kali operasi tunggu selesai sampai penantian tidak terdaftar.
Mengembalikan
Objek RegisteredWaitHandle yang dapat digunakan untuk membatalkan operasi tunggu terdaftar.
- Atribut
Pengecualian
Pemanggil tidak memiliki izin yang diperlukan.
Keterangan
RegisterWaitForSingleObject Tidak seperti metode , UnsafeRegisterWaitForSingleObject tidak menyebarluaskan tumpukan panggilan ke utas pekerja. Ini memungkinkan kode untuk kehilangan tumpukan panggilan dan dengan demikian untuk meningkatkan hak istimewa keamanannya.
Perhatian
Menggunakan UnsafeRegisterWaitForSingleObject secara tidak sengaja dapat membuka lubang keamanan. Keamanan akses kode mendasarkan pemeriksaan izinnya pada izin semua pemanggil pada tumpukan. Ketika pekerjaan diantrekan pada utas kumpulan utas menggunakan UnsafeRegisterWaitForSingleObject, tumpukan utas kumpulan utas tidak akan memiliki konteks pemanggil yang sebenarnya. Kode berbahaya mungkin dapat mengeksploitasi ini untuk menghindari pemeriksaan izin.
Mutex Menggunakan untuk waitObject
tidak memberikan pengecualian bersama untuk panggilan balik karena Windows API yang mendasar menggunakan bendera defaultWT_EXECUTEDEFAULT
, sehingga setiap panggilan balik dikirim pada utas kumpulan utas terpisah.
Ketika Anda selesai menggunakan RegisteredWaitHandle yang dikembalikan oleh metode ini, panggil metodenya RegisteredWaitHandle.Unregister untuk merilis referensi ke handel tunggu. Kami menyarankan agar Anda selalu memanggil RegisteredWaitHandle.Unregister metode , bahkan jika Anda menentukan true
untuk executeOnlyOnce
. Pengumpulan sampah bekerja lebih efisien jika Anda memanggil RegisteredWaitHandle.Unregister metode alih-alih tergantung pada finalizer handel tunggu yang terdaftar.