ThreadPool.UnsafeRegisterWaitForSingleObject Metod

Definition

Registrerar ett ombud för att vänta på en WaitHandle, men sprider inte den anropande stacken till arbetstråden.

Överlagringar

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

Registrerar ett ombud för att vänta på en WaitHandleoch anger ett TimeSpan värde för tidsgränsen. Den här metoden sprider inte anropsstacken till arbetstråden.

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

Registrerar ett ombud för att vänta på ett WaitHandle, med hjälp av ett 32-bitars signerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

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

Registrerar ett ombud för att vänta på ett WaitHandle, och anger ett 64-bitars signerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

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

Registrerar ett ombud för att vänta på ett WaitHandle, och anger ett 32-bitars osignerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

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

Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs

Registrerar ett ombud för att vänta på en WaitHandleoch anger ett TimeSpan värde för tidsgränsen. Den här metoden sprider inte anropsstacken till arbetstråden.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, TimeSpan timeout, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, 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);
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);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * TimeSpan * bool -> System.Threading.RegisteredWaitHandle
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

Parametrar

waitObject
WaitHandle

Att WaitHandle registrera. Använd en WaitHandle annan än Mutex.

callBack
WaitOrTimerCallback

Ombudet som ska anropas när parametern waitObject signaleras.

state
Object

Objektet som skickas till ombudet.

timeout
TimeSpan

Tidsgränsen som representeras av en TimeSpan. Om timeout är 0 (noll) testar funktionen objektets tillstånd och returnerar omedelbart. Om timeout är -1 förflutit aldrig funktionens tidsgränsintervall.

executeOnlyOnce
Boolean

true för att ange att tråden inte längre väntar på parametern waitObject efter att ombudet har anropats, false för att indikera att timern återställs varje gång väntetiden slutförs tills väntan har avregistrerats.

Returer

Det RegisteredWaitHandle objekt som kan användas för att avbryta den registrerade vänteåtgärden.

Attribut

Undantag

Parametern timeout är mindre än -1.

Parametern timeout är större än Int32.MaxValue.

Anroparen har inte den behörighet som krävs.

Kommentarer

RegisterWaitForSingleObject Till skillnad från metoden UnsafeRegisterWaitForSingleObject sprids inte anropsstacken till arbetstråden. Detta gör att koden kan förlora anropsstacken och därmed höja dess säkerhetsprivilegier.

Caution

Användning UnsafeRegisterWaitForSingleObject kan oavsiktligt öppna ett säkerhetshål. Kodåtkomstsäkerhet baserar sina behörighetskontroller på behörigheterna för alla anropare i stacken. När arbetet placeras i en trådpoolstråd med , UnsafeRegisterWaitForSingleObjectkommer trådpooltrådens stack inte att ha kontexten för de faktiska anroparna. Skadlig kod kan utnyttja detta för att undvika behörighetskontroller.

Att använda en Mutex för waitObject ger inte ömsesidigt undantag för återanropen eftersom den underliggande Windows-API:et använder standardflaggan WT_EXECUTEDEFAULT, så varje motringning skickas i en separat trådpooltråd.

När du är klar med det RegisteredWaitHandle som returneras av den här metoden anropar du dess RegisteredWaitHandle.Unregister metod för att frigöra referenser till väntehandtaget. Vi rekommenderar att du alltid anropar RegisteredWaitHandle.Unregister metoden, även om du anger true för executeOnlyOnce. Skräpinsamling fungerar effektivare om du anropar RegisteredWaitHandle.Unregister metoden i stället för beroende på den registrerade väntereferensens slutversion.

Se även

Gäller för

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

Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs

Registrerar ett ombud för att vänta på ett WaitHandle, med hjälp av ett 32-bitars signerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, int millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, 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);
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);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int * bool -> System.Threading.RegisteredWaitHandle
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

Parametrar

waitObject
WaitHandle

Att WaitHandle registrera. Använd en WaitHandle annan än Mutex.

callBack
WaitOrTimerCallback

Ombudet som ska anropas när parametern waitObject signaleras.

state
Object

Objektet som skickas till ombudet.

millisecondsTimeOutInterval
Int32

Tidsgränsen i millisekunder. Om parametern millisecondsTimeOutInterval är 0 (noll) testar funktionen objektets tillstånd och returnerar omedelbart. Om millisecondsTimeOutInterval är -1 förflutit aldrig funktionens tidsgränsintervall.

executeOnlyOnce
Boolean

true för att ange att tråden inte längre väntar på parametern waitObject efter att ombudet har anropats, false för att indikera att timern återställs varje gång väntetiden slutförs tills väntan har avregistrerats.

Returer

Det RegisteredWaitHandle objekt som kan användas för att avbryta den registrerade vänteåtgärden.

Attribut

Undantag

Parametern millisecondsTimeOutInterval är mindre än -1.

Anroparen har inte den behörighet som krävs.

Kommentarer

RegisterWaitForSingleObject Till skillnad från metoden UnsafeRegisterWaitForSingleObject sprids inte anropsstacken till arbetstråden. Detta gör att koden kan förlora anropsstacken och därmed höja dess säkerhetsprivilegier.

Caution

Användning UnsafeRegisterWaitForSingleObject kan oavsiktligt öppna ett säkerhetshål. Kodåtkomstsäkerhet baserar sina behörighetskontroller på behörigheterna för alla anropare i stacken. När arbetet placeras i en trådpoolstråd med , UnsafeRegisterWaitForSingleObjectkommer trådpooltrådens stack inte att ha kontexten för de faktiska anroparna. Skadlig kod kan utnyttja detta för att undvika behörighetskontroller.

Att använda en Mutex för waitObject ger inte ömsesidigt undantag för återanropen eftersom den underliggande Windows-API:et använder standardflaggan WT_EXECUTEDEFAULT, så varje motringning skickas i en separat trådpooltråd.

När du är klar med det RegisteredWaitHandle som returneras av den här metoden anropar du dess RegisteredWaitHandle.Unregister metod för att frigöra referenser till väntehandtaget. Vi rekommenderar att du alltid anropar RegisteredWaitHandle.Unregister metoden, även om du anger true för executeOnlyOnce. Skräpinsamling fungerar effektivare om du anropar RegisteredWaitHandle.Unregister metoden i stället för beroende på den registrerade väntereferensens slutversion.

Se även

Gäller för

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

Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs

Registrerar ett ombud för att vänta på ett WaitHandle, och anger ett 64-bitars signerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

public:
 static System::Threading::RegisteredWaitHandle ^ UnsafeRegisterWaitForSingleObject(System::Threading::WaitHandle ^ waitObject, System::Threading::WaitOrTimerCallback ^ callBack, System::Object ^ state, long millisecondsTimeOutInterval, bool executeOnlyOnce);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, 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);
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);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * int64 * bool -> System.Threading.RegisteredWaitHandle
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

Parametrar

waitObject
WaitHandle

Att WaitHandle registrera. Använd en WaitHandle annan än Mutex.

callBack
WaitOrTimerCallback

Ombudet som ska anropas när parametern waitObject signaleras.

state
Object

Objektet som skickas till ombudet.

millisecondsTimeOutInterval
Int64

Tidsgränsen i millisekunder. Om parametern millisecondsTimeOutInterval är 0 (noll) testar funktionen objektets tillstånd och returnerar omedelbart. Om millisecondsTimeOutInterval är -1 förflutit aldrig funktionens tidsgränsintervall.

executeOnlyOnce
Boolean

true för att ange att tråden inte längre väntar på parametern waitObject efter att ombudet har anropats, false för att indikera att timern återställs varje gång väntetiden slutförs tills väntan har avregistrerats.

Returer

Det RegisteredWaitHandle objekt som kan användas för att avbryta den registrerade vänteåtgärden.

Attribut

Undantag

Parametern millisecondsTimeOutInterval är mindre än -1.

Anroparen har inte den behörighet som krävs.

Kommentarer

RegisterWaitForSingleObject Till skillnad från metoden UnsafeRegisterWaitForSingleObject sprids inte anropsstacken till arbetstråden. Detta gör att koden kan förlora anropsstacken och därmed höja dess säkerhetsprivilegier.

Caution

Användning UnsafeRegisterWaitForSingleObject kan oavsiktligt öppna ett säkerhetshål. Kodåtkomstsäkerhet baserar sina behörighetskontroller på behörigheterna för alla anropare i stacken. När arbetet placeras i en trådpoolstråd med , UnsafeRegisterWaitForSingleObjectkommer trådpooltrådens stack inte att ha kontexten för de faktiska anroparna. Skadlig kod kan utnyttja detta för att undvika behörighetskontroller.

Att använda en Mutex för waitObject ger inte ömsesidigt undantag för återanropen eftersom den underliggande Windows-API:et använder standardflaggan WT_EXECUTEDEFAULT, så varje motringning skickas i en separat trådpooltråd.

När du är klar med det RegisteredWaitHandle som returneras av den här metoden anropar du dess RegisteredWaitHandle.Unregister metod för att frigöra referenser till väntehandtaget. Vi rekommenderar att du alltid anropar RegisteredWaitHandle.Unregister metoden, även om du anger true för executeOnlyOnce. Skräpinsamling fungerar effektivare om du anropar RegisteredWaitHandle.Unregister metoden i stället för beroende på den registrerade väntereferensens slutversion.

Se även

Gäller för

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

Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs
Källa:
ThreadPoolWorkQueue.cs

Viktigt!

Detta API uppfyller inte CLS.

Registrerar ett ombud för att vänta på ett WaitHandle, och anger ett 32-bitars osignerat heltal för tidsgränsen i millisekunder. Den här metoden sprider inte anropsstacken till arbetstråden.

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.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static System.Threading.RegisteredWaitHandle UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle waitObject, System.Threading.WaitOrTimerCallback callBack, object? state, uint 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)]
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)>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member UnsafeRegisterWaitForSingleObject : System.Threading.WaitHandle * System.Threading.WaitOrTimerCallback * obj * uint32 * bool -> System.Threading.RegisteredWaitHandle
[<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

Parametrar

waitObject
WaitHandle

Att WaitHandle registrera. Använd en WaitHandle annan än Mutex.

callBack
WaitOrTimerCallback

Ombudet som ska anropas när parametern waitObject signaleras.

state
Object

Objektet som skickas till ombudet.

millisecondsTimeOutInterval
UInt32

Tidsgränsen i millisekunder. Om parametern millisecondsTimeOutInterval är 0 (noll) testar funktionen objektets tillstånd och returnerar omedelbart. Om millisecondsTimeOutInterval är -1 förflutit aldrig funktionens tidsgränsintervall.

executeOnlyOnce
Boolean

true för att ange att tråden inte längre väntar på parametern waitObject efter att ombudet har anropats, false för att indikera att timern återställs varje gång väntetiden slutförs tills väntan har avregistrerats.

Returer

Det RegisteredWaitHandle objekt som kan användas för att avbryta den registrerade vänteåtgärden.

Attribut

Undantag

Anroparen har inte den behörighet som krävs.

Kommentarer

RegisterWaitForSingleObject Till skillnad från metoden UnsafeRegisterWaitForSingleObject sprids inte anropsstacken till arbetstråden. Detta gör att koden kan förlora anropsstacken och därmed höja dess säkerhetsprivilegier.

Caution

Användning UnsafeRegisterWaitForSingleObject kan oavsiktligt öppna ett säkerhetshål. Kodåtkomstsäkerhet baserar sina behörighetskontroller på behörigheterna för alla anropare i stacken. När arbetet placeras i en trådpoolstråd med , UnsafeRegisterWaitForSingleObjectkommer trådpooltrådens stack inte att ha kontexten för de faktiska anroparna. Skadlig kod kan utnyttja detta för att undvika behörighetskontroller.

Att använda en Mutex för waitObject ger inte ömsesidigt undantag för återanropen eftersom den underliggande Windows-API:et använder standardflaggan WT_EXECUTEDEFAULT, så varje motringning skickas i en separat trådpooltråd.

När du är klar med det RegisteredWaitHandle som returneras av den här metoden anropar du dess RegisteredWaitHandle.Unregister metod för att frigöra referenser till väntehandtaget. Vi rekommenderar att du alltid anropar RegisteredWaitHandle.Unregister metoden, även om du anger true för executeOnlyOnce. Skräpinsamling fungerar effektivare om du anropar RegisteredWaitHandle.Unregister metoden i stället för beroende på den registrerade väntereferensens slutversion.

Se även

Gäller för