ThreadPool.UnsafeRegisterWaitForSingleObject Methode

Definition

Registriert einen Delegaten, damit auf ein WaitHandle gewartet wird. Die Aufrufliste wird jedoch nicht an den Arbeitsthread weitergeleitet.Registers a delegate to wait for a WaitHandle, but does not propagate the calling stack to the worker thread.

Überlädt

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

Registriert einen Delegaten, der auf ein WaitHandle wartet, und gibt einen TimeSpan-Wert für das Timeout an. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.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)

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl mit Vorzeichen verwendet wird.Registers a delegate to wait for a WaitHandle, using a 32-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

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

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 64-Bit-Ganzzahl mit Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

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

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl ohne Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.This method does not propagate the calling stack to the worker thread.

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

Registriert einen Delegaten, der auf ein WaitHandle wartet, und gibt einen TimeSpan-Wert für das Timeout an. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.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

Parameter

waitObject
WaitHandle

Die zu registrierende WaitHandle.The WaitHandle to register. Verwenden Sie ein anderes WaitHandle als Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Der Delegat, der aufgerufen werden soll, wenn der waitObject-Parameter signalisiert wird.The delegate to call when the waitObject parameter is signaled.

state
Object

Das an den Delegaten übergebene Objekt.The object that is passed to the delegate.

timeout
TimeSpan

Das durch eine TimeSpan dargestellte Timeout.The time-out represented by a TimeSpan. Wenn timeout den Wert 0 (null) hat, prüft die Funktion den Zustand des Objekts und kehrt sofort zurück.If timeout is 0 (zero), the function tests the object's state and returns immediately. Wenn timeout den Wert -1 hat, läuft das Timeoutintervall der Funktion nie ab.If timeout is -1, the function's time-out interval never elapses.

executeOnlyOnce
Boolean

true, um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject-Parameter warten soll. false, um anzugeben, dass der Zeitgeber nach jedem Abschluss des Wartevorgangs zurückgesetzt wird, bis die Registrierung des Wartevorgangs aufgehoben wird.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.

Gibt zurück

Das RegisteredWaitHandle-Objekt, mit dem der registrierte Wartevorgang abgebrochen werden kann.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attribute

Ausnahmen

Der timeout-Parameter ist kleiner als -1.The timeout parameter is less than -1.

Der timeout-Parameter ist größer als MaxValue.The timeout parameter is greater than MaxValue.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Hinweise

Anders als bei der RegisterWaitForSingleObject-Methode gibt UnsafeRegisterWaitForSingleObject den aufrufenden Stapel nicht an den Arbeits Thread weiter.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Dies ermöglicht es dem Code, den aufrufenden Stapel zu verlieren und dadurch seine Sicherheits Privilegien zu erhöhen.This allows code to lose the calling stack and thereby to elevate its security privileges.

Achtung

Die Verwendung von UnsafeRegisterWaitForSingleObject könnte versehentlich eine Sicherheitslücke eröffnen.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. Die Code Zugriffssicherheit basiert auf den Berechtigungs Überprüfungen für die Berechtigungen aller Aufrufer auf dem Stapel.Code access security bases its permission checks on the permissions of all the callers on the stack. Wenn die Arbeit in einem Thread Pool Thread mithilfe von UnsafeRegisterWaitForSingleObject in die Warteschlange eingereiht wird, verfügt der Stapel des Thread Pool Threads nicht über den Kontext der eigentlichen Aufrufer.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. Bösartiger Code kann dies ausnutzen, um Berechtigungs Überprüfungen zu vermeiden.Malicious code might be able exploit this to avoid permission checks.

Die Verwendung eines Mutex für waitObject stellt keinen gegenseitigen Ausschluss für die Rückrufe bereit, da die zugrunde liegende Windows-API das Standard Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Thread Pool Thread gesendet wird.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.

Wenn Sie die RegisteredWaitHandle, die von dieser Methode zurückgegeben wird, nicht mehr benötigen, wenden Sie die RegisteredWaitHandle.Unregister-Methode an, um Verweise auf das Wait-Handle freizugeben.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. Es wird empfohlen, die RegisteredWaitHandle.Unregister-Methode immer aufzurufen, auch wenn Sie true für executeOnlyOnce angeben.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister-Methode anstelle von dem Finalizer des registrierten Wait-Handles aufzurufen.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.Requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

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

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl mit Vorzeichen verwendet wird.Registers a delegate to wait for a WaitHandle, using a 32-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.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

Parameter

waitObject
WaitHandle

Die zu registrierende WaitHandle.The WaitHandle to register. Verwenden Sie ein anderes WaitHandle als Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Der Delegat, der aufgerufen werden soll, wenn der waitObject-Parameter signalisiert wird.The delegate to call when the waitObject parameter is signaled.

state
Object

Das an den Delegaten übergebene Objekt.The object that is passed to the delegate.

millisecondsTimeOutInterval
Int32

Das Timeout in Millisekunden.The time-out in milliseconds. Wenn der millisecondsTimeOutInterval-Parameter 0 (null) ist, prüft die Funktion den Zustand des Objekts und kehrt sofort zurück.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Wenn millisecondsTimeOutInterval den Wert -1 hat, läuft das Timeoutintervall der Funktion nie ab.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

executeOnlyOnce
Boolean

true, um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject-Parameter warten soll. false, um anzugeben, dass der Zeitgeber nach jedem Abschluss des Wartevorgangs zurückgesetzt wird, bis die Registrierung des Wartevorgangs aufgehoben wird.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.

Gibt zurück

Das RegisteredWaitHandle-Objekt, mit dem der registrierte Wartevorgang abgebrochen werden kann.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attribute

Ausnahmen

Der millisecondsTimeOutInterval-Parameter ist kleiner als -1.The millisecondsTimeOutInterval parameter is less than -1.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Hinweise

Anders als bei der RegisterWaitForSingleObject-Methode gibt UnsafeRegisterWaitForSingleObject den aufrufenden Stapel nicht an den Arbeits Thread weiter.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Dies ermöglicht es dem Code, den aufrufenden Stapel zu verlieren und dadurch seine Sicherheits Privilegien zu erhöhen.This allows code to lose the calling stack and thereby to elevate its security privileges.

Achtung

Die Verwendung von UnsafeRegisterWaitForSingleObject könnte versehentlich eine Sicherheitslücke eröffnen.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. Die Code Zugriffssicherheit basiert auf den Berechtigungs Überprüfungen für die Berechtigungen aller Aufrufer auf dem Stapel.Code access security bases its permission checks on the permissions of all the callers on the stack. Wenn die Arbeit in einem Thread Pool Thread mithilfe von UnsafeRegisterWaitForSingleObject in die Warteschlange eingereiht wird, verfügt der Stapel des Thread Pool Threads nicht über den Kontext der eigentlichen Aufrufer.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. Bösartiger Code kann dies ausnutzen, um Berechtigungs Überprüfungen zu vermeiden.Malicious code might be able exploit this to avoid permission checks.

Die Verwendung eines Mutex für waitObject stellt keinen gegenseitigen Ausschluss für die Rückrufe bereit, da die zugrunde liegende Windows-API das Standard Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Thread Pool Thread gesendet wird.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.

Wenn Sie die RegisteredWaitHandle, die von dieser Methode zurückgegeben wird, nicht mehr benötigen, wenden Sie die RegisteredWaitHandle.Unregister-Methode an, um Verweise auf das Wait-Handle freizugeben.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. Es wird empfohlen, die RegisteredWaitHandle.Unregister-Methode immer aufzurufen, auch wenn Sie true für executeOnlyOnce angeben.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister-Methode anstelle von dem Finalizer des registrierten Wait-Handles aufzurufen.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.Requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

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

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 64-Bit-Ganzzahl mit Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 64-bit signed integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.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

Parameter

waitObject
WaitHandle

Die zu registrierende WaitHandle.The WaitHandle to register. Verwenden Sie ein anderes WaitHandle als Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Der Delegat, der aufgerufen werden soll, wenn der waitObject-Parameter signalisiert wird.The delegate to call when the waitObject parameter is signaled.

state
Object

Das an den Delegaten übergebene Objekt.The object that is passed to the delegate.

millisecondsTimeOutInterval
Int64

Das Timeout in Millisekunden.The time-out in milliseconds. Wenn der millisecondsTimeOutInterval-Parameter 0 (null) ist, prüft die Funktion den Zustand des Objekts und kehrt sofort zurück.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Wenn millisecondsTimeOutInterval den Wert -1 hat, läuft das Timeoutintervall der Funktion nie ab.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

executeOnlyOnce
Boolean

true, um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject-Parameter warten soll. false, um anzugeben, dass der Zeitgeber nach jedem Abschluss des Wartevorgangs zurückgesetzt wird, bis die Registrierung des Wartevorgangs aufgehoben wird.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.

Gibt zurück

Das RegisteredWaitHandle-Objekt, mit dem der registrierte Wartevorgang abgebrochen werden kann.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attribute

Ausnahmen

Der millisecondsTimeOutInterval-Parameter ist kleiner als -1.The millisecondsTimeOutInterval parameter is less than -1.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Hinweise

Anders als bei der RegisterWaitForSingleObject-Methode gibt UnsafeRegisterWaitForSingleObject den aufrufenden Stapel nicht an den Arbeits Thread weiter.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Dies ermöglicht es dem Code, den aufrufenden Stapel zu verlieren und dadurch seine Sicherheits Privilegien zu erhöhen.This allows code to lose the calling stack and thereby to elevate its security privileges.

Achtung

Die Verwendung von UnsafeRegisterWaitForSingleObject könnte versehentlich eine Sicherheitslücke eröffnen.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. Die Code Zugriffssicherheit basiert auf den Berechtigungs Überprüfungen für die Berechtigungen aller Aufrufer auf dem Stapel.Code access security bases its permission checks on the permissions of all the callers on the stack. Wenn die Arbeit in einem Thread Pool Thread mithilfe von UnsafeRegisterWaitForSingleObject in die Warteschlange eingereiht wird, verfügt der Stapel des Thread Pool Threads nicht über den Kontext der eigentlichen Aufrufer.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. Bösartiger Code kann dies ausnutzen, um Berechtigungs Überprüfungen zu vermeiden.Malicious code might be able exploit this to avoid permission checks.

Die Verwendung eines Mutex für waitObject stellt keinen gegenseitigen Ausschluss für die Rückrufe bereit, da die zugrunde liegende Windows-API das Standard Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Thread Pool Thread gesendet wird.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.

Wenn Sie die RegisteredWaitHandle, die von dieser Methode zurückgegeben wird, nicht mehr benötigen, wenden Sie die RegisteredWaitHandle.Unregister-Methode an, um Verweise auf das Wait-Handle freizugeben.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. Es wird empfohlen, die RegisteredWaitHandle.Unregister-Methode immer aufzurufen, auch wenn Sie true für executeOnlyOnce angeben.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister-Methode anstelle von dem Finalizer des registrierten Wait-Handles aufzurufen.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.Requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

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

Wichtig

Diese API ist nicht CLS-kompatibel.

Registriert einen Delegaten, der auf eine WaitHandle-Klasse wartet, wobei für das Timeout in Millisekunden eine 32-Bit-Ganzzahl ohne Vorzeichen angegeben wird.Registers a delegate to wait for a WaitHandle, specifying a 32-bit unsigned integer for the time-out in milliseconds. Diese Methode leitet den aufrufenden Stapel nicht an den Arbeitsthread weiter.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

Parameter

waitObject
WaitHandle

Die zu registrierende WaitHandle.The WaitHandle to register. Verwenden Sie ein anderes WaitHandle als Mutex.Use a WaitHandle other than Mutex.

callBack
WaitOrTimerCallback

Der Delegat, der aufgerufen werden soll, wenn der waitObject-Parameter signalisiert wird.The delegate to call when the waitObject parameter is signaled.

state
Object

Das an den Delegaten übergebene Objekt.The object that is passed to the delegate.

millisecondsTimeOutInterval
UInt32

Das Timeout in Millisekunden.The time-out in milliseconds. Wenn der millisecondsTimeOutInterval-Parameter 0 (null) ist, prüft die Funktion den Zustand des Objekts und kehrt sofort zurück.If the millisecondsTimeOutInterval parameter is 0 (zero), the function tests the object's state and returns immediately. Wenn millisecondsTimeOutInterval den Wert -1 hat, läuft das Timeoutintervall der Funktion nie ab.If millisecondsTimeOutInterval is -1, the function's time-out interval never elapses.

executeOnlyOnce
Boolean

true, um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject-Parameter warten soll. false, um anzugeben, dass der Zeitgeber nach jedem Abschluss des Wartevorgangs zurückgesetzt wird, bis die Registrierung des Wartevorgangs aufgehoben wird.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.

Gibt zurück

Das RegisteredWaitHandle-Objekt, mit dem der registrierte Wartevorgang abgebrochen werden kann.The RegisteredWaitHandle object that can be used to cancel the registered wait operation.

Attribute

Ausnahmen

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.The caller does not have the required permission.

Hinweise

Anders als bei der RegisterWaitForSingleObject-Methode gibt UnsafeRegisterWaitForSingleObject den aufrufenden Stapel nicht an den Arbeits Thread weiter.Unlike the RegisterWaitForSingleObject method, UnsafeRegisterWaitForSingleObject does not propagate the calling stack to the worker thread. Dies ermöglicht es dem Code, den aufrufenden Stapel zu verlieren und dadurch seine Sicherheits Privilegien zu erhöhen.This allows code to lose the calling stack and thereby to elevate its security privileges.

Achtung

Die Verwendung von UnsafeRegisterWaitForSingleObject könnte versehentlich eine Sicherheitslücke eröffnen.Using UnsafeRegisterWaitForSingleObject could inadvertently open up a security hole. Die Code Zugriffssicherheit basiert auf den Berechtigungs Überprüfungen für die Berechtigungen aller Aufrufer auf dem Stapel.Code access security bases its permission checks on the permissions of all the callers on the stack. Wenn die Arbeit in einem Thread Pool Thread mithilfe von UnsafeRegisterWaitForSingleObject in die Warteschlange eingereiht wird, verfügt der Stapel des Thread Pool Threads nicht über den Kontext der eigentlichen Aufrufer.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. Bösartiger Code kann dies ausnutzen, um Berechtigungs Überprüfungen zu vermeiden.Malicious code might be able exploit this to avoid permission checks.

Die Verwendung eines Mutex für waitObject stellt keinen gegenseitigen Ausschluss für die Rückrufe bereit, da die zugrunde liegende Windows-API das Standard Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Thread Pool Thread gesendet wird.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.

Wenn Sie die RegisteredWaitHandle, die von dieser Methode zurückgegeben wird, nicht mehr benötigen, wenden Sie die RegisteredWaitHandle.Unregister-Methode an, um Verweise auf das Wait-Handle freizugeben.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. Es wird empfohlen, die RegisteredWaitHandle.Unregister-Methode immer aufzurufen, auch wenn Sie true für executeOnlyOnce angeben.We recommend that you always call the RegisteredWaitHandle.Unregister method, even if you specify true for executeOnlyOnce. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister-Methode anstelle von dem Finalizer des registrierten Wait-Handles aufzurufen.Garbage collection works more efficiently if you call the RegisteredWaitHandle.Unregister method instead of depending on the registered wait handle's finalizer.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.Requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

Gilt für: