UnsafeRegisterWaitForSingleObject Método (WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

ThreadPool.UnsafeRegisterWaitForSingleObject (Método) (WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)

 

Registra un delegado para que espere a la clase WaitHandle y especifica un entero de 32 bits sin signo como tiempo de espera, en milisegundos.Este método no propaga la pila de llamadas al subproceso de trabajo.

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[SecurityCriticalAttribute]
[CLSCompliantAttribute(false)]
public static RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(
	WaitHandle waitObject,
	WaitOrTimerCallback callBack,
	object state,
	uint millisecondsTimeOutInterval,
	bool executeOnlyOnce
)

Parámetros

waitObject

La clase WaitHandle que se va a registrar.Use un WaitHandle diferente de Mutex.

callBack

Delegado al que se llamará cuando el parámetro waitObject esté marcado.

state

Objeto que se pasa al delegado.

millisecondsTimeOutInterval

Tiempo de espera en milisegundos.Si el valor del parámetro millisecondsTimeOutInterval es 0 (cero), la función comprueba el estado del objeto y regresa inmediatamente. Si millisecondsTimeOutInterval es -1, el intervalo de tiempo de espera de la función nunca transcurre.

executeOnlyOnce

Es true para indicar que el subproceso no esperará en el parámetro waitObject después de haber llamado al delegado; es false para indicar que el temporizador se restablecerá cada vez que se complete la operación de espera, hasta que se anule el registro de la espera.

Valor devuelto

Type: System.Threading.RegisteredWaitHandle

Objeto RegisteredWaitHandle que puede usarse para cancelar la operación de espera registrada.

Exception Condition
SecurityException

The caller does not have the required permission.

Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread.This allows code to lose the calling stack and thereby to elevate its security privileges.

System_CAPS_cautionPrecaución

Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole.Code access security bases its permission checks on the permissions of all the callers on the stack.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.Malicious code might be able exploit this to avoid permission checks.

Using a Mutex for waitObject does not provide mutual exclusion for the callbacks because the underlying Win32 API uses the default WT_EXECUTEDEFAULT flag, so each callback is dispatched on a separate thread pool thread.

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.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

SecurityCriticalAttribute

Requires full trust for the immediate caller.This member cannot be used by partially trusted or transparent code.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar:
© 2016 Microsoft