ThreadPool.UnsafeRegisterWaitForSingleObject Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir temsilcisini beklerken WaitHandlekaydeder, ancak çağrı yığınını çalışan iş parçacığına yaymaz.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Zaman aşımı için bir değer belirterek beklemesi için WaitHandlebir TimeSpan temsilci kaydeder. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Milisaniye cinsinden zaman aşımı için WaitHandle32 bit imzalı tamsayı kullanarak bir temsilciyi bekler. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Zaman aşımı için WaitHandlemilisaniye cinsinden 64 bit imzalı bir tamsayı belirterek bir temsilcisini bekler. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Zaman aşımı için milisaniye cinsinden 32 bit işaretsiz bir tamsayı belirten bir WaitHandletemsilciyi beklemesi için kaydeder. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
Zaman aşımı için bir değer belirterek beklemesi için WaitHandlebir TimeSpan temsilci kaydeder. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor.
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
Parametreler
- waitObject
- WaitHandle
WaitHandle Kaydedilecek. dışında WaitHandlebir Mutex kullanın.
- callBack
- WaitOrTimerCallback
Parametre sinyallendiğinde waitObject çağrılacak temsilci.
- state
- Object
Temsilciye geçirilen nesne.
- timeout
- TimeSpan
bir TimeSpanile temsil edilen zaman aşımı. 0 (sıfır) ise timeout işlev nesnenin durumunu sınar ve hemen döndürür. -1 ise timeout , işlevin zaman aşımı aralığı hiçbir zaman dolmaz.
- executeOnlyOnce
- Boolean
true temsilci çağrıldıktan sonra iş parçacığının artık parametresinde waitObject beklemeyeceğini belirtmek için; false bekleme işlemi kaydı kaldırılana kadar bekleme işlemi her tamamlandığında zamanlayıcının sıfırlandığını belirtmek için.
Döndürülenler
RegisteredWaitHandle Kayıtlı bekleme işlemini iptal etmek için kullanılabilecek nesne.
- Öznitelikler
Özel durumlar
timeout Parametre -1'den küçük.
timeout parametresi Int32.MaxValue değerinden büyüktür.
Çağıranın gerekli izni yok.
Açıklamalar
yönteminden RegisterWaitForSingleObject farklı olarak, UnsafeRegisterWaitForSingleObject çağıran yığını çalışan iş parçacığına yaymaz. Bu, kodun çağrı yığınını kaybetmesine ve böylece güvenlik ayrıcalıklarını yükseltmesine olanak tanır.
Caution
Kullanmak UnsafeRegisterWaitForSingleObject istemeden bir güvenlik deliği açabilir. Kod erişimi güvenliği, izin denetimlerini yığındaki tüm çağıranların izinlerine göre temel alır. kullanılarak iş parçacığı havuzu iş parçacığında UnsafeRegisterWaitForSingleObjectiş kuyruğuna alındığında, iş parçacığı havuzu iş parçacığı yığını gerçek çağıranların bağlamını içermez. Kötü amaçlı kod, izin denetimlerini önlemek için bu koddan yararlanabilir.
Mutex için waitObject kullanılması, temel alınan Windows API'sinin varsayılan WT_EXECUTEDEFAULT bayrağını kullandığından, her geri çağırma ayrı bir iş parçacığı havuzu iş parçacığına dağıtıldığından geri çağırmalar için karşılıklı dışlama sağlamaz.
Bu yöntem tarafından döndürülen öğesini kullanmayı RegisteredWaitHandle bitirdiğinizde, bekleme tutamacıyla RegisteredWaitHandle.Unregister ilgili başvuruları serbest bırakmak için yöntemini çağırın. için RegisteredWaitHandle.Unregisterbelirtseniz true bile yöntemini her zaman çağırmanızı executeOnlyOnce öneririz. Kayıtlı bekleme tutamacının sonlandırıcıya RegisteredWaitHandle.Unregister bağlı olarak yerine yöntemini çağırırsanız çöp toplama daha verimli çalışır.
Ayrıca bkz.
Şunlara uygulanır
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
Milisaniye cinsinden zaman aşımı için WaitHandle32 bit imzalı tamsayı kullanarak bir temsilciyi bekler. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor.
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
Parametreler
- waitObject
- WaitHandle
WaitHandle Kaydedilecek. dışında WaitHandlebir Mutex kullanın.
- callBack
- WaitOrTimerCallback
Parametre sinyallendiğinde waitObject çağrılacak temsilci.
- state
- Object
Temsilciye geçirilen nesne.
- millisecondsTimeOutInterval
- Int32
Milisaniye cinsinden zaman aşımı.
millisecondsTimeOutInterval Parametre 0 (sıfır) ise işlev nesnenin durumunu sınar ve hemen döndürür. -1 ise millisecondsTimeOutInterval , işlevin zaman aşımı aralığı hiçbir zaman dolmaz.
- executeOnlyOnce
- Boolean
true temsilci çağrıldıktan sonra iş parçacığının artık parametresinde waitObject beklemeyeceğini belirtmek için; false bekleme işlemi kaydı kaldırılana kadar bekleme işlemi her tamamlandığında zamanlayıcının sıfırlandığını belirtmek için.
Döndürülenler
RegisteredWaitHandle Kayıtlı bekleme işlemini iptal etmek için kullanılabilecek nesne.
- Öznitelikler
Özel durumlar
millisecondsTimeOutInterval Parametre -1'den küçük.
Çağıranın gerekli izni yok.
Açıklamalar
yönteminden RegisterWaitForSingleObject farklı olarak, UnsafeRegisterWaitForSingleObject çağıran yığını çalışan iş parçacığına yaymaz. Bu, kodun çağrı yığınını kaybetmesine ve böylece güvenlik ayrıcalıklarını yükseltmesine olanak tanır.
Caution
Kullanmak UnsafeRegisterWaitForSingleObject istemeden bir güvenlik deliği açabilir. Kod erişimi güvenliği, izin denetimlerini yığındaki tüm çağıranların izinlerine göre temel alır. kullanılarak iş parçacığı havuzu iş parçacığında UnsafeRegisterWaitForSingleObjectiş kuyruğuna alındığında, iş parçacığı havuzu iş parçacığı yığını gerçek çağıranların bağlamını içermez. Kötü amaçlı kod, izin denetimlerini önlemek için bu koddan yararlanabilir.
Mutex için waitObject kullanılması, temel alınan Windows API'sinin varsayılan WT_EXECUTEDEFAULT bayrağını kullandığından, her geri çağırma ayrı bir iş parçacığı havuzu iş parçacığına dağıtıldığından geri çağırmalar için karşılıklı dışlama sağlamaz.
Bu yöntem tarafından döndürülen öğesini kullanmayı RegisteredWaitHandle bitirdiğinizde, bekleme tutamacıyla RegisteredWaitHandle.Unregister ilgili başvuruları serbest bırakmak için yöntemini çağırın. için RegisteredWaitHandle.Unregisterbelirtseniz true bile yöntemini her zaman çağırmanızı executeOnlyOnce öneririz. Kayıtlı bekleme tutamacının sonlandırıcıya RegisteredWaitHandle.Unregister bağlı olarak yerine yöntemini çağırırsanız çöp toplama daha verimli çalışır.
Ayrıca bkz.
Şunlara uygulanır
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
Zaman aşımı için WaitHandlemilisaniye cinsinden 64 bit imzalı bir tamsayı belirterek bir temsilcisini bekler. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor.
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
Parametreler
- waitObject
- WaitHandle
WaitHandle Kaydedilecek. dışında WaitHandlebir Mutex kullanın.
- callBack
- WaitOrTimerCallback
Parametre sinyallendiğinde waitObject çağrılacak temsilci.
- state
- Object
Temsilciye geçirilen nesne.
- millisecondsTimeOutInterval
- Int64
Milisaniye cinsinden zaman aşımı.
millisecondsTimeOutInterval Parametre 0 (sıfır) ise işlev nesnenin durumunu sınar ve hemen döndürür. -1 ise millisecondsTimeOutInterval , işlevin zaman aşımı aralığı hiçbir zaman dolmaz.
- executeOnlyOnce
- Boolean
true temsilci çağrıldıktan sonra iş parçacığının artık parametresinde waitObject beklemeyeceğini belirtmek için; false bekleme işlemi kaydı kaldırılana kadar bekleme işlemi her tamamlandığında zamanlayıcının sıfırlandığını belirtmek için.
Döndürülenler
RegisteredWaitHandle Kayıtlı bekleme işlemini iptal etmek için kullanılabilecek nesne.
- Öznitelikler
Özel durumlar
millisecondsTimeOutInterval Parametre -1'den küçük.
Çağıranın gerekli izni yok.
Açıklamalar
yönteminden RegisterWaitForSingleObject farklı olarak, UnsafeRegisterWaitForSingleObject çağıran yığını çalışan iş parçacığına yaymaz. Bu, kodun çağrı yığınını kaybetmesine ve böylece güvenlik ayrıcalıklarını yükseltmesine olanak tanır.
Caution
Kullanmak UnsafeRegisterWaitForSingleObject istemeden bir güvenlik deliği açabilir. Kod erişimi güvenliği, izin denetimlerini yığındaki tüm çağıranların izinlerine göre temel alır. kullanılarak iş parçacığı havuzu iş parçacığında UnsafeRegisterWaitForSingleObjectiş kuyruğuna alındığında, iş parçacığı havuzu iş parçacığı yığını gerçek çağıranların bağlamını içermez. Kötü amaçlı kod, izin denetimlerini önlemek için bu koddan yararlanabilir.
Mutex için waitObject kullanılması, temel alınan Windows API'sinin varsayılan WT_EXECUTEDEFAULT bayrağını kullandığından, her geri çağırma ayrı bir iş parçacığı havuzu iş parçacığına dağıtıldığından geri çağırmalar için karşılıklı dışlama sağlamaz.
Bu yöntem tarafından döndürülen öğesini kullanmayı RegisteredWaitHandle bitirdiğinizde, bekleme tutamacıyla RegisteredWaitHandle.Unregister ilgili başvuruları serbest bırakmak için yöntemini çağırın. için RegisteredWaitHandle.Unregisterbelirtseniz true bile yöntemini her zaman çağırmanızı executeOnlyOnce öneririz. Kayıtlı bekleme tutamacının sonlandırıcıya RegisteredWaitHandle.Unregister bağlı olarak yerine yöntemini çağırırsanız çöp toplama daha verimli çalışır.
Ayrıca bkz.
Şunlara uygulanır
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
- Kaynak:
- ThreadPoolWorkQueue.cs
Önemli
Bu API, CLS uyumlu değildir.
Zaman aşımı için milisaniye cinsinden 32 bit işaretsiz bir tamsayı belirten bir WaitHandletemsilciyi beklemesi için kaydeder. Bu yöntem çağrı yığınını çalışan iş parçacığına yaymıyor.
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
Parametreler
- waitObject
- WaitHandle
WaitHandle Kaydedilecek. dışında WaitHandlebir Mutex kullanın.
- callBack
- WaitOrTimerCallback
Parametre sinyallendiğinde waitObject çağrılacak temsilci.
- state
- Object
Temsilciye geçirilen nesne.
- millisecondsTimeOutInterval
- UInt32
Milisaniye cinsinden zaman aşımı.
millisecondsTimeOutInterval Parametre 0 (sıfır) ise işlev nesnenin durumunu sınar ve hemen döndürür. -1 ise millisecondsTimeOutInterval , işlevin zaman aşımı aralığı hiçbir zaman dolmaz.
- executeOnlyOnce
- Boolean
true temsilci çağrıldıktan sonra iş parçacığının artık parametresinde waitObject beklemeyeceğini belirtmek için; false bekleme işlemi kaydı kaldırılana kadar bekleme işlemi her tamamlandığında zamanlayıcının sıfırlandığını belirtmek için.
Döndürülenler
RegisteredWaitHandle Kayıtlı bekleme işlemini iptal etmek için kullanılabilecek nesne.
- Öznitelikler
Özel durumlar
Çağıranın gerekli izni yok.
Açıklamalar
yönteminden RegisterWaitForSingleObject farklı olarak, UnsafeRegisterWaitForSingleObject çağıran yığını çalışan iş parçacığına yaymaz. Bu, kodun çağrı yığınını kaybetmesine ve böylece güvenlik ayrıcalıklarını yükseltmesine olanak tanır.
Caution
Kullanmak UnsafeRegisterWaitForSingleObject istemeden bir güvenlik deliği açabilir. Kod erişimi güvenliği, izin denetimlerini yığındaki tüm çağıranların izinlerine göre temel alır. kullanılarak iş parçacığı havuzu iş parçacığında UnsafeRegisterWaitForSingleObjectiş kuyruğuna alındığında, iş parçacığı havuzu iş parçacığı yığını gerçek çağıranların bağlamını içermez. Kötü amaçlı kod, izin denetimlerini önlemek için bu koddan yararlanabilir.
Mutex için waitObject kullanılması, temel alınan Windows API'sinin varsayılan WT_EXECUTEDEFAULT bayrağını kullandığından, her geri çağırma ayrı bir iş parçacığı havuzu iş parçacığına dağıtıldığından geri çağırmalar için karşılıklı dışlama sağlamaz.
Bu yöntem tarafından döndürülen öğesini kullanmayı RegisteredWaitHandle bitirdiğinizde, bekleme tutamacıyla RegisteredWaitHandle.Unregister ilgili başvuruları serbest bırakmak için yöntemini çağırın. için RegisteredWaitHandle.Unregisterbelirtseniz true bile yöntemini her zaman çağırmanızı executeOnlyOnce öneririz. Kayıtlı bekleme tutamacının sonlandırıcıya RegisteredWaitHandle.Unregister bağlı olarak yerine yöntemini çağırırsanız çöp toplama daha verimli çalışır.