ThreadPool.UnsafeRegisterWaitForSingleObject Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Registriert eine Stellvertretung, die auf einen WaitHandleArbeitsthread wartet, aber den Aufrufstapel nicht an den Workerthread weitergibt.
Überlädt
| Name | Beschreibung |
|---|---|
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Registriert eine Stellvertretung, um auf eine WaitHandle32-Bit-Ganzzahl mit Vorzeichen für das Timeout in Millisekunden zu warten. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Registriert eine Stellvertretung, die auf eine WaitHandle64-Bit-Ganzzahl mit Vorzeichen für das Timeout in Millisekunden wartet. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Registriert eine Stellvertretung, um auf einen WaitHandleWert zu warten, der einen TimeSpan Wert für das Timeout angibt. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Registriert eine Stellvertretung, um auf eine WaitHandle32-Bit-Ganzzahl ohne Vorzeichen für das Timeout in Millisekunden zu warten. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
Registriert eine Stellvertretung, um auf eine WaitHandle32-Bit-Ganzzahl mit Vorzeichen für das Timeout in Millisekunden zu warten. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter.
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
Parameter
- waitObject
- WaitHandle
Der zu registrierende Eintrag WaitHandle . Verwenden Sie einen WaitHandle anderen als Mutex.
- callBack
- WaitOrTimerCallback
Der Delegat, der aufgerufen werden soll, wenn der waitObject Parameter signalisiert wird.
- state
- Object
Das Objekt, das an den Delegaten übergeben wird.
- millisecondsTimeOutInterval
- Int32
Das Timeout in Millisekunden. Wenn der millisecondsTimeOutInterval Parameter 0 (null) ist, testet die Funktion den Zustand des Objekts und gibt sofort zurück. Wenn millisecondsTimeOutInterval -1 ist, wird das Timeoutintervall der Funktion nie verstrichen.
- executeOnlyOnce
- Boolean
true um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject Parameter wartet. false Um anzugeben, dass der Timer jedes Mal zurückgesetzt wird, wenn der Wartezeitvorgang abgeschlossen ist, bis die Registrierung aufgehoben wird.
Gibt zurück
Das RegisteredWaitHandle Objekt, das zum Abbrechen des registrierten Wartevorgangs verwendet werden kann.
- Attribute
Ausnahmen
Der millisecondsTimeOutInterval Parameter ist kleiner als -1.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Im Gegensatz zur RegisterWaitForSingleObject Methode UnsafeRegisterWaitForSingleObject wird der aufrufende Stapel nicht an den Workerthread weitergegeben. Dadurch kann Code den aufrufenden Stapel verlieren und dadurch seine Sicherheitsberechtigungen erhöhen.
Vorsicht
Die Verwendung UnsafeRegisterWaitForSingleObject könnte versehentlich ein Sicherheitsloch öffnen. Die Codezugriffssicherheit basiert auf den Berechtigungsprüfungen aller Aufrufer im Stapel. Wenn die Arbeit in eine Threadpoolthreadwarteschlange eingereiht UnsafeRegisterWaitForSingleObjectwird, verfügt der Stapel des Threadpoolthreads nicht über den Kontext der tatsächlichen Aufrufer. Bösartiger Code kann dies möglicherweise ausnutzen, um Berechtigungsprüfungen zu vermeiden.
Die Verwendung eines Mutex für waitObject bietet keinen gegenseitigen Ausschluss für die Rückrufe, da die zugrunde liegende Windows-API das Standard-Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Threadpoolthread verteilt wird.
Wenn Sie mit der Verwendung der RegisteredWaitHandle von dieser Methode zurückgegebenen Methode fertig sind, rufen Sie dessen RegisteredWaitHandle.Unregister Methode auf, um Verweise auf das Wartehandle freizugeben. Es wird empfohlen, die RegisteredWaitHandle.Unregister Methode immer aufzurufen, auch wenn Sie dies executeOnlyOnceangebentrue. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister Methode anstelle des Finalizers des registrierten Wartekästchens aufrufen.
Weitere Informationen
Gilt für:
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
Registriert eine Stellvertretung, die auf eine WaitHandle64-Bit-Ganzzahl mit Vorzeichen für das Timeout in Millisekunden wartet. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter.
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
Parameter
- waitObject
- WaitHandle
Der zu registrierende Eintrag WaitHandle . Verwenden Sie einen WaitHandle anderen als Mutex.
- callBack
- WaitOrTimerCallback
Der Delegat, der aufgerufen werden soll, wenn der waitObject Parameter signalisiert wird.
- state
- Object
Das Objekt, das an den Delegaten übergeben wird.
- millisecondsTimeOutInterval
- Int64
Das Timeout in Millisekunden. Wenn der millisecondsTimeOutInterval Parameter 0 (null) ist, testet die Funktion den Zustand des Objekts und gibt sofort zurück. Wenn millisecondsTimeOutInterval -1 ist, wird das Timeoutintervall der Funktion nie verstrichen.
- executeOnlyOnce
- Boolean
true um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject Parameter wartet. false Um anzugeben, dass der Timer jedes Mal zurückgesetzt wird, wenn der Wartezeitvorgang abgeschlossen ist, bis die Registrierung aufgehoben wird.
Gibt zurück
Das RegisteredWaitHandle Objekt, das zum Abbrechen des registrierten Wartevorgangs verwendet werden kann.
- Attribute
Ausnahmen
Der millisecondsTimeOutInterval Parameter ist kleiner als -1.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Im Gegensatz zur RegisterWaitForSingleObject Methode UnsafeRegisterWaitForSingleObject wird der aufrufende Stapel nicht an den Workerthread weitergegeben. Dadurch kann Code den aufrufenden Stapel verlieren und dadurch seine Sicherheitsberechtigungen erhöhen.
Vorsicht
Die Verwendung UnsafeRegisterWaitForSingleObject könnte versehentlich ein Sicherheitsloch öffnen. Die Codezugriffssicherheit basiert auf den Berechtigungsprüfungen aller Aufrufer im Stapel. Wenn die Arbeit in eine Threadpoolthreadwarteschlange eingereiht UnsafeRegisterWaitForSingleObjectwird, verfügt der Stapel des Threadpoolthreads nicht über den Kontext der tatsächlichen Aufrufer. Bösartiger Code kann dies möglicherweise ausnutzen, um Berechtigungsprüfungen zu vermeiden.
Die Verwendung eines Mutex für waitObject bietet keinen gegenseitigen Ausschluss für die Rückrufe, da die zugrunde liegende Windows-API das Standard-Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Threadpoolthread verteilt wird.
Wenn Sie mit der Verwendung der RegisteredWaitHandle von dieser Methode zurückgegebenen Methode fertig sind, rufen Sie dessen RegisteredWaitHandle.Unregister Methode auf, um Verweise auf das Wartehandle freizugeben. Es wird empfohlen, die RegisteredWaitHandle.Unregister Methode immer aufzurufen, auch wenn Sie dies executeOnlyOnceangebentrue. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister Methode anstelle des Finalizers des registrierten Wartekästchens aufrufen.
Weitere Informationen
Gilt für:
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
Registriert eine Stellvertretung, um auf einen WaitHandleWert zu warten, der einen TimeSpan Wert für das Timeout angibt. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter.
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
Parameter
- waitObject
- WaitHandle
Der zu registrierende Eintrag WaitHandle . Verwenden Sie einen WaitHandle anderen als Mutex.
- callBack
- WaitOrTimerCallback
Der Delegat, der aufgerufen werden soll, wenn der waitObject Parameter signalisiert wird.
- state
- Object
Das Objekt, das an den Delegaten übergeben wird.
- timeout
- TimeSpan
Das durch ein TimeSpan. Wenn timeout 0 (Null) ist, testet die Funktion den Zustand des Objekts und gibt sofort zurück. Wenn timeout -1 ist, wird das Timeoutintervall der Funktion nie verstrichen.
- executeOnlyOnce
- Boolean
true um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject Parameter wartet. false Um anzugeben, dass der Timer jedes Mal zurückgesetzt wird, wenn der Wartezeitvorgang abgeschlossen ist, bis die Registrierung aufgehoben wird.
Gibt zurück
Das RegisteredWaitHandle Objekt, das zum Abbrechen des registrierten Wartevorgangs verwendet werden kann.
- Attribute
Ausnahmen
Der timeout Parameter ist kleiner als -1.
Der timeout Parameter ist größer als Int32.MaxValue.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Im Gegensatz zur RegisterWaitForSingleObject Methode UnsafeRegisterWaitForSingleObject wird der aufrufende Stapel nicht an den Workerthread weitergegeben. Dadurch kann Code den aufrufenden Stapel verlieren und dadurch seine Sicherheitsberechtigungen erhöhen.
Vorsicht
Die Verwendung UnsafeRegisterWaitForSingleObject könnte versehentlich ein Sicherheitsloch öffnen. Die Codezugriffssicherheit basiert auf den Berechtigungsprüfungen aller Aufrufer im Stapel. Wenn die Arbeit in eine Threadpoolthreadwarteschlange eingereiht UnsafeRegisterWaitForSingleObjectwird, verfügt der Stapel des Threadpoolthreads nicht über den Kontext der tatsächlichen Aufrufer. Bösartiger Code kann dies möglicherweise ausnutzen, um Berechtigungsprüfungen zu vermeiden.
Die Verwendung eines Mutex für waitObject bietet keinen gegenseitigen Ausschluss für die Rückrufe, da die zugrunde liegende Windows-API das Standard-Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Threadpoolthread verteilt wird.
Wenn Sie mit der Verwendung der RegisteredWaitHandle von dieser Methode zurückgegebenen Methode fertig sind, rufen Sie dessen RegisteredWaitHandle.Unregister Methode auf, um Verweise auf das Wartehandle freizugeben. Es wird empfohlen, die RegisteredWaitHandle.Unregister Methode immer aufzurufen, auch wenn Sie dies executeOnlyOnceangebentrue. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister Methode anstelle des Finalizers des registrierten Wartekästchens aufrufen.
Weitere Informationen
Gilt für:
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
Wichtig
Diese API ist nicht CLS-kompatibel.
Registriert eine Stellvertretung, um auf eine WaitHandle32-Bit-Ganzzahl ohne Vorzeichen für das Timeout in Millisekunden zu warten. Diese Methode gibt den Aufrufstapel nicht an den Workerthread weiter.
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
Parameter
- waitObject
- WaitHandle
Der zu registrierende Eintrag WaitHandle . Verwenden Sie einen WaitHandle anderen als Mutex.
- callBack
- WaitOrTimerCallback
Der Delegat, der aufgerufen werden soll, wenn der waitObject Parameter signalisiert wird.
- state
- Object
Das Objekt, das an den Delegaten übergeben wird.
- millisecondsTimeOutInterval
- UInt32
Das Timeout in Millisekunden. Wenn der millisecondsTimeOutInterval Parameter 0 (null) ist, testet die Funktion den Zustand des Objekts und gibt sofort zurück. Wenn millisecondsTimeOutInterval -1 ist, wird das Timeoutintervall der Funktion nie verstrichen.
- executeOnlyOnce
- Boolean
true um anzugeben, dass der Thread nach dem Aufruf des Delegaten nicht mehr auf den waitObject Parameter wartet. false Um anzugeben, dass der Timer jedes Mal zurückgesetzt wird, wenn der Wartezeitvorgang abgeschlossen ist, bis die Registrierung aufgehoben wird.
Gibt zurück
Das RegisteredWaitHandle Objekt, das zum Abbrechen des registrierten Wartevorgangs verwendet werden kann.
- Attribute
Ausnahmen
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Im Gegensatz zur RegisterWaitForSingleObject Methode UnsafeRegisterWaitForSingleObject wird der aufrufende Stapel nicht an den Workerthread weitergegeben. Dadurch kann Code den aufrufenden Stapel verlieren und dadurch seine Sicherheitsberechtigungen erhöhen.
Vorsicht
Die Verwendung UnsafeRegisterWaitForSingleObject könnte versehentlich ein Sicherheitsloch öffnen. Die Codezugriffssicherheit basiert auf den Berechtigungsprüfungen aller Aufrufer im Stapel. Wenn die Arbeit in eine Threadpoolthreadwarteschlange eingereiht UnsafeRegisterWaitForSingleObjectwird, verfügt der Stapel des Threadpoolthreads nicht über den Kontext der tatsächlichen Aufrufer. Bösartiger Code kann dies möglicherweise ausnutzen, um Berechtigungsprüfungen zu vermeiden.
Die Verwendung eines Mutex für waitObject bietet keinen gegenseitigen Ausschluss für die Rückrufe, da die zugrunde liegende Windows-API das Standard-Flag WT_EXECUTEDEFAULT verwendet, sodass jeder Rückruf in einem separaten Threadpoolthread verteilt wird.
Wenn Sie mit der Verwendung der RegisteredWaitHandle von dieser Methode zurückgegebenen Methode fertig sind, rufen Sie dessen RegisteredWaitHandle.Unregister Methode auf, um Verweise auf das Wartehandle freizugeben. Es wird empfohlen, die RegisteredWaitHandle.Unregister Methode immer aufzurufen, auch wenn Sie dies executeOnlyOnceangebentrue. Die Garbage Collection funktioniert effizienter, wenn Sie die RegisteredWaitHandle.Unregister Methode anstelle des Finalizers des registrierten Wartekästchens aufrufen.