ThreadPool.UnsafeRegisterWaitForSingleObject Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Registra un delegado para esperar a , WaitHandlepero no propaga la pila de llamadas al subproceso de trabajo.
Sobrecargas
| Nombre | Description |
|---|---|
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Registra un delegado para esperar a un WaitHandle, utilizando un entero de 32 bits con signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Registra un delegado para esperar un WaitHandle, especificando un entero de 64 bits con signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Registra un delegado para esperar WaitHandleun , especificando un TimeSpan valor para el tiempo de espera. Este método no propaga la pila de llamadas al subproceso de trabajo. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Registra un delegado para esperar un WaitHandle, especificando un entero de 32 bits sin signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
Registra un delegado para esperar a un WaitHandle, utilizando un entero de 32 bits con signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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
Parámetros
- waitObject
- WaitHandle
que WaitHandle se va a registrar. Use un valor WaitHandle distinto de Mutex.
- callBack
- WaitOrTimerCallback
Delegado al que se llamará cuando se señale el waitObject parámetro.
- state
- Object
Objeto que se pasa al delegado.
- millisecondsTimeOutInterval
- Int32
Tiempo de espera en milisegundos. Si el millisecondsTimeOutInterval parámetro es 0 (cero), la función prueba el estado del objeto y devuelve inmediatamente. Si millisecondsTimeOutInterval es -1, el intervalo de tiempo de espera de la función nunca transcurre.
- executeOnlyOnce
- Boolean
true para indicar que el subproceso ya no esperará en el waitObject parámetro después de llamar al delegado; false para indicar que el temporizador se restablece cada vez que se complete la operación de espera hasta que se anule el registro de espera.
Devoluciones
Objeto RegisteredWaitHandle que se puede usar para cancelar la operación de espera registrada.
- Atributos
Excepciones
El millisecondsTimeOutInterval parámetro es menor que -1.
El autor de la llamada no tiene el permiso necesario.
Comentarios
A diferencia del RegisterWaitForSingleObject método , UnsafeRegisterWaitForSingleObject no propaga la pila de llamadas al subproceso de trabajo. Esto permite que el código pierda la pila de llamadas y, por tanto, elevar sus privilegios de seguridad.
Caution
El uso UnsafeRegisterWaitForSingleObject podría abrir accidentalmente un agujero de seguridad. La seguridad de acceso al código basa sus comprobaciones de permisos en los permisos de todos los llamadores de la pila. Cuando el trabajo se pone en cola en un subproceso de grupo de subprocesos mediante UnsafeRegisterWaitForSingleObject, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los llamadores reales. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.
El uso de un Mutex para waitObject no proporciona exclusión mutua para las devoluciones de llamada porque la API de Windows subyacente usa la marca WT_EXECUTEDEFAULT predeterminada, por lo que cada devolución de llamada se envía en un subproceso de grupo de subprocesos independiente.
Cuando haya terminado de usar el RegisteredWaitHandle valor devuelto por este método, llame a su RegisteredWaitHandle.Unregister método para liberar referencias al identificador de espera. Se recomienda llamar siempre al RegisteredWaitHandle.Unregister método , incluso si especifica true para executeOnlyOnce. La recolección de elementos no utilizados funciona de forma más eficaz si llama al RegisteredWaitHandle.Unregister método en lugar de en función del finalizador del identificador de espera registrado.
Consulte también
Se aplica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
Registra un delegado para esperar un WaitHandle, especificando un entero de 64 bits con signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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
Parámetros
- waitObject
- WaitHandle
que WaitHandle se va a registrar. Use un valor WaitHandle distinto de Mutex.
- callBack
- WaitOrTimerCallback
Delegado al que se llamará cuando se señale el waitObject parámetro.
- state
- Object
Objeto que se pasa al delegado.
- millisecondsTimeOutInterval
- Int64
Tiempo de espera en milisegundos. Si el millisecondsTimeOutInterval parámetro es 0 (cero), la función prueba el estado del objeto y devuelve inmediatamente. Si millisecondsTimeOutInterval es -1, el intervalo de tiempo de espera de la función nunca transcurre.
- executeOnlyOnce
- Boolean
true para indicar que el subproceso ya no esperará en el waitObject parámetro después de llamar al delegado; false para indicar que el temporizador se restablece cada vez que se complete la operación de espera hasta que se anule el registro de espera.
Devoluciones
Objeto RegisteredWaitHandle que se puede usar para cancelar la operación de espera registrada.
- Atributos
Excepciones
El millisecondsTimeOutInterval parámetro es menor que -1.
El autor de la llamada no tiene el permiso necesario.
Comentarios
A diferencia del RegisterWaitForSingleObject método , UnsafeRegisterWaitForSingleObject no propaga la pila de llamadas al subproceso de trabajo. Esto permite que el código pierda la pila de llamadas y, por tanto, elevar sus privilegios de seguridad.
Caution
El uso UnsafeRegisterWaitForSingleObject podría abrir accidentalmente un agujero de seguridad. La seguridad de acceso al código basa sus comprobaciones de permisos en los permisos de todos los llamadores de la pila. Cuando el trabajo se pone en cola en un subproceso de grupo de subprocesos mediante UnsafeRegisterWaitForSingleObject, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los llamadores reales. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.
El uso de un Mutex para waitObject no proporciona exclusión mutua para las devoluciones de llamada porque la API de Windows subyacente usa la marca WT_EXECUTEDEFAULT predeterminada, por lo que cada devolución de llamada se envía en un subproceso de grupo de subprocesos independiente.
Cuando haya terminado de usar el RegisteredWaitHandle valor devuelto por este método, llame a su RegisteredWaitHandle.Unregister método para liberar referencias al identificador de espera. Se recomienda llamar siempre al RegisteredWaitHandle.Unregister método , incluso si especifica true para executeOnlyOnce. La recolección de elementos no utilizados funciona de forma más eficaz si llama al RegisteredWaitHandle.Unregister método en lugar de en función del finalizador del identificador de espera registrado.
Consulte también
Se aplica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
Registra un delegado para esperar WaitHandleun , especificando un TimeSpan valor para el tiempo de espera. Este método no propaga la pila de llamadas al subproceso de trabajo.
public:
static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::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);
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
Parámetros
- waitObject
- WaitHandle
que WaitHandle se va a registrar. Use un valor WaitHandle distinto de Mutex.
- callBack
- WaitOrTimerCallback
Delegado al que se llamará cuando se señale el waitObject parámetro.
- state
- Object
Objeto que se pasa al delegado.
- timeout
- TimeSpan
Tiempo de espera representado por .TimeSpan Si timeout es 0 (cero), la función prueba el estado del objeto y devuelve inmediatamente. Si timeout es -1, el intervalo de tiempo de espera de la función nunca transcurre.
- executeOnlyOnce
- Boolean
true para indicar que el subproceso ya no esperará en el waitObject parámetro después de llamar al delegado; false para indicar que el temporizador se restablece cada vez que se complete la operación de espera hasta que se anule el registro de espera.
Devoluciones
Objeto RegisteredWaitHandle que se puede usar para cancelar la operación de espera registrada.
- Atributos
Excepciones
El timeout parámetro es menor que -1.
El timeout parámetro es mayor que Int32.MaxValue.
El autor de la llamada no tiene el permiso necesario.
Comentarios
A diferencia del RegisterWaitForSingleObject método , UnsafeRegisterWaitForSingleObject no propaga la pila de llamadas al subproceso de trabajo. Esto permite que el código pierda la pila de llamadas y, por tanto, elevar sus privilegios de seguridad.
Caution
El uso UnsafeRegisterWaitForSingleObject podría abrir accidentalmente un agujero de seguridad. La seguridad de acceso al código basa sus comprobaciones de permisos en los permisos de todos los llamadores de la pila. Cuando el trabajo se pone en cola en un subproceso de grupo de subprocesos mediante UnsafeRegisterWaitForSingleObject, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los llamadores reales. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.
El uso de un Mutex para waitObject no proporciona exclusión mutua para las devoluciones de llamada porque la API de Windows subyacente usa la marca WT_EXECUTEDEFAULT predeterminada, por lo que cada devolución de llamada se envía en un subproceso de grupo de subprocesos independiente.
Cuando haya terminado de usar el RegisteredWaitHandle valor devuelto por este método, llame a su RegisteredWaitHandle.Unregister método para liberar referencias al identificador de espera. Se recomienda llamar siempre al RegisteredWaitHandle.Unregister método , incluso si especifica true para executeOnlyOnce. La recolección de elementos no utilizados funciona de forma más eficaz si llama al RegisteredWaitHandle.Unregister método en lugar de en función del finalizador del identificador de espera registrado.
Consulte también
Se aplica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
Importante
Esta API no es conforme a CLS.
Registra un delegado para esperar un WaitHandle, especificando un entero de 32 bits sin signo para el tiempo de espera en milisegundos. Este método no propaga la pila de llamadas al subproceso de trabajo.
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)]
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)>]
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
Parámetros
- waitObject
- WaitHandle
que WaitHandle se va a registrar. Use un valor WaitHandle distinto de Mutex.
- callBack
- WaitOrTimerCallback
Delegado al que se llamará cuando se señale el waitObject parámetro.
- state
- Object
Objeto que se pasa al delegado.
- millisecondsTimeOutInterval
- UInt32
Tiempo de espera en milisegundos. Si el millisecondsTimeOutInterval parámetro es 0 (cero), la función prueba el estado del objeto y devuelve inmediatamente. Si millisecondsTimeOutInterval es -1, el intervalo de tiempo de espera de la función nunca transcurre.
- executeOnlyOnce
- Boolean
true para indicar que el subproceso ya no esperará en el waitObject parámetro después de llamar al delegado; false para indicar que el temporizador se restablece cada vez que se complete la operación de espera hasta que se anule el registro de espera.
Devoluciones
Objeto RegisteredWaitHandle que se puede usar para cancelar la operación de espera registrada.
- Atributos
Excepciones
El autor de la llamada no tiene el permiso necesario.
Comentarios
A diferencia del RegisterWaitForSingleObject método , UnsafeRegisterWaitForSingleObject no propaga la pila de llamadas al subproceso de trabajo. Esto permite que el código pierda la pila de llamadas y, por tanto, elevar sus privilegios de seguridad.
Caution
El uso UnsafeRegisterWaitForSingleObject podría abrir accidentalmente un agujero de seguridad. La seguridad de acceso al código basa sus comprobaciones de permisos en los permisos de todos los llamadores de la pila. Cuando el trabajo se pone en cola en un subproceso de grupo de subprocesos mediante UnsafeRegisterWaitForSingleObject, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los llamadores reales. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.
El uso de un Mutex para waitObject no proporciona exclusión mutua para las devoluciones de llamada porque la API de Windows subyacente usa la marca WT_EXECUTEDEFAULT predeterminada, por lo que cada devolución de llamada se envía en un subproceso de grupo de subprocesos independiente.
Cuando haya terminado de usar el RegisteredWaitHandle valor devuelto por este método, llame a su RegisteredWaitHandle.Unregister método para liberar referencias al identificador de espera. Se recomienda llamar siempre al RegisteredWaitHandle.Unregister método , incluso si especifica true para executeOnlyOnce. La recolección de elementos no utilizados funciona de forma más eficaz si llama al RegisteredWaitHandle.Unregister método en lugar de en función del finalizador del identificador de espera registrado.