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.Registers a delegate to wait for a WaitHandle, but does not propagate the calling stack to the worker thread.

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.Registers a delegate to wait for a WaitHandle, specifying a TimeSpan value for the time-out. This method does not propagate the calling stack to the worker thread.

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.Registers a delegate to wait for a WaitHandle, using a 32-bit signed integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

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é.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

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é.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

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.Registers a delegate to wait for a WaitHandle, specifying a TimeSpan value for the time-out. This method does not propagate the calling stack to the worker thread.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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.The WaitHandle to register. Utilisez un WaitHandle autre que Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.The delegate to call when the waitObject parameter is signaled.

state
Object

Objet passé au délégué.The object that is passed to the delegate.

timeout
TimeSpan

Délai représenté par TimeSpan.The time-out represented by a 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.If timeout is 0 (zero), the function tests the object's state and returns immediately. Si timeout a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.If timeout is -1, the function's time-out interval never elapses.

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.true to indicate that the thread will no longer wait on the waitObject parameter after the delegate has been called; false to indicate that the timer is reset every time the wait operation completes until the wait is unregistered.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attributs

Exceptions

Le paramètre timeout est inférieur à -1.The timeout parameter is less than -1.

Le paramètre timeout est supérieur à MaxValue.The timeout parameter is greater than MaxValue.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Remarques

Contrairement à la méthode RegisterWaitForSingleObject, UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante vers le thread de travail.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Cela permet au code de perdre la pile d’appel et, par conséquent, d’élever ses privilèges de sécurité.This allows code to lose the calling stack and thereby to elevate its security privileges.

Attention

L’utilisation de UnsafeRegisterWaitForSingleObject peut ouvrir par inadvertance une brèche de sécurité.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. La sécurité d’accès du code fonde ses contrôles d’autorisation sur les autorisations de tous les appelants sur la pile.Code access security bases its permission checks on the permissions of all the callers on the stack. Quand le travail est mis en file d’attente sur un thread de pool de threads à l’aide de UnsafeRegisterWaitForSingleObject, la pile du thread de pool de threads n’a pas le contexte des appelants réels.When work is queued on a thread pool thread using UnsafeRegisterWaitForSingleObject, the stack of the thread pool thread will not have the context of the actual callers. Un code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisations.Malicious code might be able exploit this to avoid permission checks.

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 WT_EXECUTEDEFAULT par défaut, de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.Using a Mutex for waitObject does not provide mutual exclusion for the callbacks because the underlying Windows API uses the default WT_EXECUTEDEFAULT flag, so each callback is dispatched on a separate thread pool thread.

Lorsque vous avez terminé d’utiliser la RegisteredWaitHandle qui est retournée par cette méthode, appelez sa méthode RegisteredWaitHandle.Unregister pour libérer les références au handle d’attente.When you are finished using the RegisteredWaitHandle that is returned by this method, call its RegisteredWaitHandle.Unregister method to release references to the wait handle. Nous vous recommandons de toujours appeler la méthode RegisteredWaitHandle.Unregister, même si vous spécifiez true pour executeOnlyOnce.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la méthode RegisteredWaitHandle.Unregister au lieu de dépendre du finaliseur du handle d’attente inscrit.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sécurité

SecurityCriticalAttribute
Requiert une confiance totale pour l’appelant immédiat.Requires full trust for the immediate caller. Ce membre ne peut pas être utilisé par du code de confiance partielle ou transparent.This member cannot be used by partially trusted or transparent code.

Voir aussi

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.Registers a delegate to wait for a WaitHandle, using a 32-bit signed integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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.The WaitHandle to register. Utilisez un WaitHandle autre que Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.The delegate to call when the waitObject parameter is signaled.

state
Object

Objet passé au délégué.The object that is passed to the delegate.

millisecondsTimeOutInterval
Int32

Délai en millisecondes.The time-out in milliseconds. 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.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

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.true to indicate that the thread will no longer wait on the waitObject parameter after the delegate has been called; false to indicate that the timer is reset every time the wait operation completes until the wait is unregistered.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attributs

Exceptions

Le paramètre millisecondsTimeOutInterval est inférieur à -1.The millisecondsTimeOutInterval parameter is less than -1.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Remarques

Contrairement à la méthode RegisterWaitForSingleObject, UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante vers le thread de travail.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Cela permet au code de perdre la pile d’appel et, par conséquent, d’élever ses privilèges de sécurité.This allows code to lose the calling stack and thereby to elevate its security privileges.

Attention

L’utilisation de UnsafeRegisterWaitForSingleObject peut ouvrir par inadvertance une brèche de sécurité.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. La sécurité d’accès du code fonde ses contrôles d’autorisation sur les autorisations de tous les appelants sur la pile.Code access security bases its permission checks on the permissions of all the callers on the stack. Quand le travail est mis en file d’attente sur un thread de pool de threads à l’aide de UnsafeRegisterWaitForSingleObject, la pile du thread de pool de threads n’a pas le contexte des appelants réels.When work is queued on a thread pool thread using UnsafeRegisterWaitForSingleObject, the stack of the thread pool thread will not have the context of the actual callers. Un code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisations.Malicious code might be able exploit this to avoid permission checks.

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 WT_EXECUTEDEFAULT par défaut, de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.Using a Mutex for waitObject does not provide mutual exclusion for the callbacks because the underlying Windows API uses the default WT_EXECUTEDEFAULT flag, so each callback is dispatched on a separate thread pool thread.

Lorsque vous avez terminé d’utiliser la RegisteredWaitHandle qui est retournée par cette méthode, appelez sa méthode RegisteredWaitHandle.Unregister pour libérer les références au handle d’attente.When you are finished using the RegisteredWaitHandle that is returned by this method, call its RegisteredWaitHandle.Unregister method to release references to the wait handle. Nous vous recommandons de toujours appeler la méthode RegisteredWaitHandle.Unregister, même si vous spécifiez true pour executeOnlyOnce.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la méthode RegisteredWaitHandle.Unregister au lieu de dépendre du finaliseur du handle d’attente inscrit.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sécurité

SecurityCriticalAttribute
Requiert une confiance totale pour l’appelant immédiat.Requires full trust for the immediate caller. Ce membre ne peut pas être utilisé par du code de confiance partielle ou transparent.This member cannot be used by partially trusted or transparent code.

Voir aussi

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é.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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.The WaitHandle to register. Utilisez un WaitHandle autre que Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.The delegate to call when the waitObject parameter is signaled.

state
Object

Objet passé au délégué.The object that is passed to the delegate.

millisecondsTimeOutInterval
Int64

Délai en millisecondes.The time-out in milliseconds. 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.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

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.true to indicate that the thread will no longer wait on the waitObject parameter after the delegate has been called; false to indicate that the timer is reset every time the wait operation completes until the wait is unregistered.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attributs

Exceptions

Le paramètre millisecondsTimeOutInterval est inférieur à -1.The millisecondsTimeOutInterval parameter is less than -1.

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Remarques

Contrairement à la méthode RegisterWaitForSingleObject, UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante vers le thread de travail.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Cela permet au code de perdre la pile d’appel et, par conséquent, d’élever ses privilèges de sécurité.This allows code to lose the calling stack and thereby to elevate its security privileges.

Attention

L’utilisation de UnsafeRegisterWaitForSingleObject peut ouvrir par inadvertance une brèche de sécurité.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. La sécurité d’accès du code fonde ses contrôles d’autorisation sur les autorisations de tous les appelants sur la pile.Code access security bases its permission checks on the permissions of all the callers on the stack. Quand le travail est mis en file d’attente sur un thread de pool de threads à l’aide de UnsafeRegisterWaitForSingleObject, la pile du thread de pool de threads n’a pas le contexte des appelants réels.When work is queued on a thread pool thread using UnsafeRegisterWaitForSingleObject, the stack of the thread pool thread will not have the context of the actual callers. Un code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisations.Malicious code might be able exploit this to avoid permission checks.

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 WT_EXECUTEDEFAULT par défaut, de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.Using a Mutex for waitObject does not provide mutual exclusion for the callbacks because the underlying Windows API uses the default WT_EXECUTEDEFAULT flag, so each callback is dispatched on a separate thread pool thread.

Lorsque vous avez terminé d’utiliser la RegisteredWaitHandle qui est retournée par cette méthode, appelez sa méthode RegisteredWaitHandle.Unregister pour libérer les références au handle d’attente.When you are finished using the RegisteredWaitHandle that is returned by this method, call its RegisteredWaitHandle.Unregister method to release references to the wait handle. Nous vous recommandons de toujours appeler la méthode RegisteredWaitHandle.Unregister, même si vous spécifiez true pour executeOnlyOnce.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la méthode RegisteredWaitHandle.Unregister au lieu de dépendre du finaliseur du handle d’attente inscrit.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sécurité

SecurityCriticalAttribute
Requiert une confiance totale pour l’appelant immédiat.Requires full trust for the immediate caller. Ce membre ne peut pas être utilisé par du code de confiance partielle ou transparent.This member cannot be used by partially trusted or transparent code.

Voir aussi

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

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é.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds. Cette méthode ne propage pas la pile appelante vers le thread de travail.This method does not propagate the calling stack to the worker thread.

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.Security.SecurityCritical]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject (System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object state, uint millisecondsTimeOutInterval, bool executeOnlyOnce);
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.The WaitHandle to register. Utilisez un WaitHandle autre que Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Délégué à appeler lorsque le paramètre waitObject est signalé.The delegate to call when the waitObject parameter is signaled.

state
Object

Objet passé au délégué.The object that is passed to the delegate.

millisecondsTimeOutInterval
UInt32

Délai en millisecondes.The time-out in milliseconds. 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.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Si millisecondsTimeOutInterval a la valeur -1, le délai d'expiration de la fonction ne prend jamais fin.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

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.true to indicate that the thread will no longer wait on the waitObject parameter after the delegate has been called; false to indicate that the timer is reset every time the wait operation completes until the wait is unregistered.

Retours

Objet RegisteredWaitHandle pouvant être utilisé pour annuler l'opération d'attente inscrite.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attributs

Exceptions

L'appelant n'a pas l'autorisation requise.The caller does not have the required permission.

Remarques

Contrairement à la méthode RegisterWaitForSingleObject, UnsafeRegisterWaitForSingleObject ne propage pas la pile appelante vers le thread de travail.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Cela permet au code de perdre la pile d’appel et, par conséquent, d’élever ses privilèges de sécurité.This allows code to lose the calling stack and thereby to elevate its security privileges.

Attention

L’utilisation de UnsafeRegisterWaitForSingleObject peut ouvrir par inadvertance une brèche de sécurité.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. La sécurité d’accès du code fonde ses contrôles d’autorisation sur les autorisations de tous les appelants sur la pile.Code access security bases its permission checks on the permissions of all the callers on the stack. Quand le travail est mis en file d’attente sur un thread de pool de threads à l’aide de UnsafeRegisterWaitForSingleObject, la pile du thread de pool de threads n’a pas le contexte des appelants réels.When work is queued on a thread pool thread using UnsafeRegisterWaitForSingleObject, the stack of the thread pool thread will not have the context of the actual callers. Un code malveillant peut être en mesure de l’exploiter pour éviter les vérifications d’autorisations.Malicious code might be able exploit this to avoid permission checks.

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 WT_EXECUTEDEFAULT par défaut, de sorte que chaque rappel est distribué sur un thread de pool de threads distinct.Using a Mutex for waitObject does not provide mutual exclusion for the callbacks because the underlying Windows API uses the default WT_EXECUTEDEFAULT flag, so each callback is dispatched on a separate thread pool thread.

Lorsque vous avez terminé d’utiliser la RegisteredWaitHandle qui est retournée par cette méthode, appelez sa méthode RegisteredWaitHandle.Unregister pour libérer les références au handle d’attente.When you are finished using the RegisteredWaitHandle that is returned by this method, call its RegisteredWaitHandle.Unregister method to release references to the wait handle. Nous vous recommandons de toujours appeler la méthode RegisteredWaitHandle.Unregister, même si vous spécifiez true pour executeOnlyOnce.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Le garbage collection fonctionne plus efficacement si vous appelez la méthode RegisteredWaitHandle.Unregister au lieu de dépendre du finaliseur du handle d’attente inscrit.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sécurité

SecurityCriticalAttribute
Requiert une confiance totale pour l’appelant immédiat.Requires full trust for the immediate caller. Ce membre ne peut pas être utilisé par du code de confiance partielle ou transparent.This member cannot be used by partially trusted or transparent code.

Voir aussi

S’applique à