Partager via


ThreadPool.UnsafeRegisterWaitForSingleObject Méthode

Définition

Inscrit un délégué pour attendre un WaitHandle, mais ne propage pas la pile appelante vers le thread de travail.

Surcharges

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Inscrit un délégué en attente de WaitHandle, en spécifiant une valeur TimeSpan pour indiquer le délai. Cette méthode ne propage pas la pile appelante vers le thread de travail.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier signé 32 bits. Cette méthode ne propage pas la pile appelante vers le thread de travail.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier 64 bits signé. Cette méthode ne propage pas la pile appelante vers le thread de travail.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier 32 bits non signé. Cette méthode ne propage pas la pile appelante vers le thread de travail.

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)

Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs

Inscrit un délégué en attente de WaitHandle, en spécifiant une valeur TimeSpan pour indiquer le délai. Cette méthode ne propage pas la pile appelante vers le thread de travail.

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

Paramètres

waitObject
WaitHandle

WaitHandle à inscrire. Utilisez un WaitHandle autre que Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.

state
Object

Objet passé au délégué.

timeout
TimeSpan

Délai représenté par TimeSpan. Si le paramètre timeout a la valeur zéro, la fonction teste l'état de l'objet et procède à un retour immédiat. Si timeout a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.

executeOnlyOnce
Boolean

true pour indiquer que le thread ne tiendra plus compte du paramètre waitObject une fois le délégué appelé ; false pour indiquer que la minuterie sera réinitialisée à chaque achèvement d'opération d'attente, jusqu'à annulation de l'inscription de l'attente.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.

Attributs

Exceptions

Le paramètre timeout est inférieur à -1.

Le timeout paramètre est supérieur à Int32.MaxValue.

L'appelant n'a pas l'autorisation requise.

Remarques

Contrairement à la RegisterWaitForSingleObject méthode , UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante au thread de travail. Cela permet au code de perdre la pile appelante et ainsi d’élever ses privilèges de sécurité.

Attention

L’utilisation UnsafeRegisterWaitForSingleObject de pourrait ouvrir par inadvertance un trou de sécurité. La sécurité d’accès du code base ses vérifications d’autorisation sur les autorisations de tous les appelants sur la pile. Lorsque le travail est mis en file d’attente sur un thread de pool de threads à l’aide UnsafeRegisterWaitForSingleObjectde , la pile du thread du pool de threads n’a pas le contexte des appelants réels. Du code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisation.

L’utilisation d’un Mutex pour waitObject ne fournit pas d’exclusion mutuelle pour les rappels, car l’API Windows sous-jacente utilise l’indicateur par défaut WT_EXECUTEDEFAULT , de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.

Lorsque vous avez terminé d’utiliser le RegisteredWaitHandle qui est retourné par cette méthode, appelez sa RegisteredWaitHandle.Unregister méthode pour libérer les références au handle d’attente. Nous vous recommandons d’appeler toujours la RegisteredWaitHandle.Unregister méthode , même si vous spécifiez true pour executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la RegisteredWaitHandle.Unregister méthode au lieu de dépendre du finaliseur du handle d’attente inscrit.

Voir aussi

S’applique à

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)

Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier signé 32 bits. Cette méthode ne propage pas la pile appelante vers le thread de travail.

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

Paramètres

waitObject
WaitHandle

WaitHandle à inscrire. Utilisez un WaitHandle autre que Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.

state
Object

Objet passé au délégué.

millisecondsTimeOutInterval
Int32

Délai en millisecondes. Si le paramètre millisecondsTimeOutInterval a la valeur zéro (0), la fonction teste l'état de l'objet et procède à un retour immédiat. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.

executeOnlyOnce
Boolean

true pour indiquer que le thread ne tiendra plus compte du paramètre waitObject une fois le délégué appelé ; false pour indiquer que la minuterie sera réinitialisée à chaque achèvement d'opération d'attente, jusqu'à annulation de l'inscription de l'attente.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.

Attributs

Exceptions

Le paramètre millisecondsTimeOutInterval est inférieur à -1.

L'appelant n'a pas l'autorisation requise.

Remarques

Contrairement à la RegisterWaitForSingleObject méthode , UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante au thread de travail. Cela permet au code de perdre la pile appelante et ainsi d’élever ses privilèges de sécurité.

Attention

L’utilisation UnsafeRegisterWaitForSingleObject de pourrait ouvrir par inadvertance un trou de sécurité. La sécurité d’accès du code base ses vérifications d’autorisation sur les autorisations de tous les appelants sur la pile. Lorsque le travail est mis en file d’attente sur un thread de pool de threads à l’aide UnsafeRegisterWaitForSingleObjectde , la pile du thread du pool de threads n’a pas le contexte des appelants réels. Du code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisation.

L’utilisation d’un Mutex pour waitObject ne fournit pas d’exclusion mutuelle pour les rappels, car l’API Windows sous-jacente utilise l’indicateur par défaut WT_EXECUTEDEFAULT , de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.

Lorsque vous avez terminé d’utiliser le RegisteredWaitHandle qui est retourné par cette méthode, appelez sa RegisteredWaitHandle.Unregister méthode pour libérer les références au handle d’attente. Nous vous recommandons d’appeler toujours la RegisteredWaitHandle.Unregister méthode , même si vous spécifiez true pour executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la RegisteredWaitHandle.Unregister méthode au lieu de dépendre du finaliseur du handle d’attente inscrit.

Voir aussi

S’applique à

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)

Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier 64 bits signé. Cette méthode ne propage pas la pile appelante vers le thread de travail.

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

Paramètres

waitObject
WaitHandle

WaitHandle à inscrire. Utilisez un WaitHandle autre que Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.

state
Object

Objet passé au délégué.

millisecondsTimeOutInterval
Int64

Délai en millisecondes. Si le paramètre millisecondsTimeOutInterval a la valeur zéro (0), la fonction teste l'état de l'objet et procède à un retour immédiat. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.

executeOnlyOnce
Boolean

true pour indiquer que le thread ne tiendra plus compte du paramètre waitObject une fois le délégué appelé ; false pour indiquer que la minuterie sera réinitialisée à chaque achèvement d'opération d'attente, jusqu'à annulation de l'inscription de l'attente.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.

Attributs

Exceptions

Le paramètre millisecondsTimeOutInterval est inférieur à -1.

L'appelant n'a pas l'autorisation requise.

Remarques

Contrairement à la RegisterWaitForSingleObject méthode , UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante au thread de travail. Cela permet au code de perdre la pile appelante et ainsi d’élever ses privilèges de sécurité.

Attention

L’utilisation UnsafeRegisterWaitForSingleObject de pourrait ouvrir par inadvertance un trou de sécurité. La sécurité d’accès du code base ses vérifications d’autorisation sur les autorisations de tous les appelants sur la pile. Lorsque le travail est mis en file d’attente sur un thread de pool de threads à l’aide UnsafeRegisterWaitForSingleObjectde , la pile du thread du pool de threads n’a pas le contexte des appelants réels. Du code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisation.

L’utilisation d’un Mutex pour waitObject ne fournit pas d’exclusion mutuelle pour les rappels, car l’API Windows sous-jacente utilise l’indicateur par défaut WT_EXECUTEDEFAULT , de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.

Lorsque vous avez terminé d’utiliser le RegisteredWaitHandle qui est retourné par cette méthode, appelez sa RegisteredWaitHandle.Unregister méthode pour libérer les références au handle d’attente. Nous vous recommandons d’appeler toujours la RegisteredWaitHandle.Unregister méthode , même si vous spécifiez true pour executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la RegisteredWaitHandle.Unregister méthode au lieu de dépendre du finaliseur du handle d’attente inscrit.

Voir aussi

S’applique à

UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs
Source:
ThreadPoolWorkQueue.cs

Important

Cette API n’est pas conforme CLS.

Inscrit un délégué pour attendre un WaitHandle, en utilisant, pour indiquer le délai en millisecondes, un entier 32 bits non signé. Cette méthode ne propage pas la pile appelante vers le thread de travail.

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

Paramètres

waitObject
WaitHandle

WaitHandle à inscrire. Utilisez un WaitHandle autre que Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.

state
Object

Objet passé au délégué.

millisecondsTimeOutInterval
UInt32

Délai en millisecondes. Si le paramètre millisecondsTimeOutInterval a la valeur zéro (0), la fonction teste l'état de l'objet et procède à un retour immédiat. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.

executeOnlyOnce
Boolean

true pour indiquer que le thread ne tiendra plus compte du paramètre waitObject une fois le délégué appelé ; false pour indiquer que la minuterie sera réinitialisée à chaque achèvement d'opération d'attente, jusqu'à annulation de l'inscription de l'attente.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.

Attributs

Exceptions

L'appelant n'a pas l'autorisation requise.

Remarques

Contrairement à la RegisterWaitForSingleObject méthode , UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante au thread de travail. Cela permet au code de perdre la pile appelante et ainsi d’élever ses privilèges de sécurité.

Attention

L’utilisation UnsafeRegisterWaitForSingleObject de pourrait ouvrir par inadvertance un trou de sécurité. La sécurité d’accès du code base ses vérifications d’autorisation sur les autorisations de tous les appelants sur la pile. Lorsque le travail est mis en file d’attente sur un thread de pool de threads à l’aide UnsafeRegisterWaitForSingleObjectde , la pile du thread du pool de threads n’a pas le contexte des appelants réels. Du code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisation.

L’utilisation d’un Mutex pour waitObject ne fournit pas d’exclusion mutuelle pour les rappels, car l’API Windows sous-jacente utilise l’indicateur par défaut WT_EXECUTEDEFAULT , de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.

Lorsque vous avez terminé d’utiliser le RegisteredWaitHandle qui est retourné par cette méthode, appelez sa RegisteredWaitHandle.Unregister méthode pour libérer les références au handle d’attente. Nous vous recommandons d’appeler toujours la RegisteredWaitHandle.Unregister méthode , même si vous spécifiez true pour executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la RegisteredWaitHandle.Unregister méthode au lieu de dépendre du finaliseur du handle d’attente inscrit.

Voir aussi

S’applique à