ThreadPool.UnsafeRegisterWaitForSingleObject Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.