ThreadPool.UnsafeRegisterWaitForSingleObject Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Registra un delegato per l'attesa di un WaitHandle, ma non propaga lo stack di chiamata nel thread di lavoro.
Overload
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un valore TimeSpan per il timeout. Questo metodo non propaga lo stack di chiamate al thread di lavoro. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Registra un delegato per l'attesa di un WaitHandle, specificando un intero con segno a 32 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un valore intero con segno a 64 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un intero senza segno a 32 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un valore TimeSpan per il timeout. Questo metodo non propaga lo stack di chiamate al thread di lavoro.
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
Parametri
- waitObject
- WaitHandle
WaitHandle da registrare. Usare una classe WaitHandle diversa da Mutex.
- callBack
- WaitOrTimerCallback
Delegato da chiamare quando il parametro waitObject
riceve un segnale.
- state
- Object
Oggetto passato al delegato.
- timeout
- TimeSpan
Il timeout rappresentato da un valore TimeSpan. Se timeout
è pari a 0 (zero), la funzione verifica lo stato dell'oggetto e restituisce immediatamente un valore. Se timeout
è -1, l'intervallo di timeout della funzione non termina mai.
- executeOnlyOnce
- Boolean
Viene restituito true
per indicare che il thread non attenderà più in base al parametro waitObject
dopo la chiamata al delegato; false
per indicare che il timer viene reimpostato ogni volta che l'operazione di attesa viene completata fino all'annullamento della registrazione dell'attesa.
Restituisce
Oggetto RegisteredWaitHandle che può essere usato per annullare l'operazione di attesa registrata.
- Attributi
Eccezioni
Il parametro timeout
è minore di -1.
Il timeout
parametro è maggiore di Int32.MaxValue.
Il chiamante non dispone dell'autorizzazione richiesta.
Commenti
A differenza del RegisterWaitForSingleObject metodo , UnsafeRegisterWaitForSingleObject non propaga lo stack di chiamate al thread di lavoro. Ciò consente al codice di perdere lo stack di chiamate e quindi di elevare i privilegi di sicurezza.
Attenzione
L'uso UnsafeRegisterWaitForSingleObject di potrebbe inavvertitamente aprire un buco di sicurezza. La sicurezza dell'accesso al codice basa i controlli delle autorizzazioni per le autorizzazioni di tutti i chiamanti nello stack. Quando il lavoro viene accodato in un thread del pool di thread usando UnsafeRegisterWaitForSingleObject, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi. Il codice dannoso potrebbe essere in grado di sfruttarlo per evitare i controlli delle autorizzazioni.
L'uso di per MutexwaitObject
non fornisce l'esclusione reciproca per i callback perché l'API Di Windows sottostante usa il flag predefinito WT_EXECUTEDEFAULT
, quindi ogni callback viene inviato in un thread del pool di thread separato.
Al termine dell'utilizzo dell'oggetto RegisteredWaitHandle restituito da questo metodo, chiamare il relativo RegisteredWaitHandle.Unregister metodo per rilasciare i riferimenti all'handle di attesa. È consigliabile chiamare sempre il RegisteredWaitHandle.Unregister metodo , anche se si specifica true
per executeOnlyOnce
. Garbage Collection funziona in modo più efficiente se si chiama il RegisteredWaitHandle.Unregister metodo anziché a seconda del finalizzatore dell'handle di attesa registrato.
Vedi anche
Si applica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
Registra un delegato per l'attesa di un WaitHandle, specificando un intero con segno a 32 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro.
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
Parametri
- waitObject
- WaitHandle
WaitHandle da registrare. Usare una classe WaitHandle diversa da Mutex.
- callBack
- WaitOrTimerCallback
Delegato da chiamare quando il parametro waitObject
riceve un segnale.
- state
- Object
Oggetto passato al delegato.
- millisecondsTimeOutInterval
- Int32
Timeout in millisecondi. Se il parametro millisecondsTimeOutInterval
è pari a 0 (zero), la funzione verifica lo stato dell'oggetto e restituisce immediatamente un valore. Se millisecondsTimeOutInterval
è -1, l'intervallo di timeout della funzione non termina mai.
- executeOnlyOnce
- Boolean
Viene restituito true
per indicare che il thread non attenderà più in base al parametro waitObject
dopo la chiamata al delegato; false
per indicare che il timer viene reimpostato ogni volta che l'operazione di attesa viene completata fino all'annullamento della registrazione dell'attesa.
Restituisce
Oggetto RegisteredWaitHandle che può essere usato per annullare l'operazione di attesa registrata.
- Attributi
Eccezioni
Il parametro millisecondsTimeOutInterval
è minore di -1.
Il chiamante non dispone dell'autorizzazione richiesta.
Commenti
A differenza del RegisterWaitForSingleObject metodo , UnsafeRegisterWaitForSingleObject non propaga lo stack di chiamate al thread di lavoro. Ciò consente al codice di perdere lo stack di chiamate e quindi di elevare i privilegi di sicurezza.
Attenzione
L'uso UnsafeRegisterWaitForSingleObject di potrebbe inavvertitamente aprire un buco di sicurezza. La sicurezza dell'accesso al codice basa i controlli delle autorizzazioni per le autorizzazioni di tutti i chiamanti nello stack. Quando il lavoro viene accodato in un thread del pool di thread usando UnsafeRegisterWaitForSingleObject, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi. Il codice dannoso potrebbe essere in grado di sfruttarlo per evitare i controlli delle autorizzazioni.
L'uso di per MutexwaitObject
non fornisce l'esclusione reciproca per i callback perché l'API Di Windows sottostante usa il flag predefinito WT_EXECUTEDEFAULT
, quindi ogni callback viene inviato in un thread del pool di thread separato.
Al termine dell'utilizzo dell'oggetto RegisteredWaitHandle restituito da questo metodo, chiamare il relativo RegisteredWaitHandle.Unregister metodo per rilasciare i riferimenti all'handle di attesa. È consigliabile chiamare sempre il RegisteredWaitHandle.Unregister metodo , anche se si specifica true
per executeOnlyOnce
. Garbage Collection funziona in modo più efficiente se si chiama il RegisteredWaitHandle.Unregister metodo anziché a seconda del finalizzatore dell'handle di attesa registrato.
Vedi anche
Si applica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un valore intero con segno a 64 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro.
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
Parametri
- waitObject
- WaitHandle
WaitHandle da registrare. Usare una classe WaitHandle diversa da Mutex.
- callBack
- WaitOrTimerCallback
Delegato da chiamare quando il parametro waitObject
riceve un segnale.
- state
- Object
Oggetto passato al delegato.
- millisecondsTimeOutInterval
- Int64
Timeout in millisecondi. Se il parametro millisecondsTimeOutInterval
è pari a 0 (zero), la funzione verifica lo stato dell'oggetto e restituisce immediatamente un valore. Se millisecondsTimeOutInterval
è -1, l'intervallo di timeout della funzione non termina mai.
- executeOnlyOnce
- Boolean
Viene restituito true
per indicare che il thread non attenderà più in base al parametro waitObject
dopo la chiamata al delegato; false
per indicare che il timer viene reimpostato ogni volta che l'operazione di attesa viene completata fino all'annullamento della registrazione dell'attesa.
Restituisce
Oggetto RegisteredWaitHandle che può essere usato per annullare l'operazione di attesa registrata.
- Attributi
Eccezioni
Il parametro millisecondsTimeOutInterval
è minore di -1.
Il chiamante non dispone dell'autorizzazione richiesta.
Commenti
A differenza del RegisterWaitForSingleObject metodo , UnsafeRegisterWaitForSingleObject non propaga lo stack di chiamate al thread di lavoro. Ciò consente al codice di perdere lo stack di chiamate e quindi di elevare i privilegi di sicurezza.
Attenzione
L'uso UnsafeRegisterWaitForSingleObject di potrebbe inavvertitamente aprire un buco di sicurezza. La sicurezza dell'accesso al codice basa i controlli delle autorizzazioni per le autorizzazioni di tutti i chiamanti nello stack. Quando il lavoro viene accodato in un thread del pool di thread usando UnsafeRegisterWaitForSingleObject, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi. Il codice dannoso potrebbe essere in grado di sfruttarlo per evitare i controlli delle autorizzazioni.
L'uso di per MutexwaitObject
non fornisce l'esclusione reciproca per i callback perché l'API Di Windows sottostante usa il flag predefinito WT_EXECUTEDEFAULT
, quindi ogni callback viene inviato in un thread del pool di thread separato.
Al termine dell'utilizzo dell'oggetto RegisteredWaitHandle restituito da questo metodo, chiamare il relativo RegisteredWaitHandle.Unregister metodo per rilasciare i riferimenti all'handle di attesa. È consigliabile chiamare sempre il RegisteredWaitHandle.Unregister metodo , anche se si specifica true
per executeOnlyOnce
. Garbage Collection funziona in modo più efficiente se si chiama il RegisteredWaitHandle.Unregister metodo anziché a seconda del finalizzatore dell'handle di attesa registrato.
Vedi anche
Si applica a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
- Origine:
- ThreadPoolWorkQueue.cs
Importante
Questa API non è conforme a CLS.
Registra un delegato per l'attesa di un oggetto WaitHandle, specificando un intero senza segno a 32 bit per il timeout in millisecondi. Questo metodo non propaga lo stack di chiamate al thread di lavoro.
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
Parametri
- waitObject
- WaitHandle
WaitHandle da registrare. Usare una classe WaitHandle diversa da Mutex.
- callBack
- WaitOrTimerCallback
Delegato da chiamare quando il parametro waitObject
riceve un segnale.
- state
- Object
Oggetto passato al delegato.
- millisecondsTimeOutInterval
- UInt32
Timeout in millisecondi. Se il parametro millisecondsTimeOutInterval
è pari a 0 (zero), la funzione verifica lo stato dell'oggetto e restituisce immediatamente un valore. Se millisecondsTimeOutInterval
è -1, l'intervallo di timeout della funzione non termina mai.
- executeOnlyOnce
- Boolean
Viene restituito true
per indicare che il thread non attenderà più in base al parametro waitObject
dopo la chiamata al delegato; false
per indicare che il timer viene reimpostato ogni volta che l'operazione di attesa viene completata fino all'annullamento della registrazione dell'attesa.
Restituisce
Oggetto RegisteredWaitHandle che può essere usato per annullare l'operazione di attesa registrata.
- Attributi
Eccezioni
Il chiamante non dispone dell'autorizzazione richiesta.
Commenti
A differenza del RegisterWaitForSingleObject metodo, UnsafeRegisterWaitForSingleObject non propaga lo stack di chiamate al thread di lavoro. Ciò consente al codice di perdere lo stack di chiamate e quindi di elevare i privilegi di sicurezza.
Attenzione
L'uso UnsafeRegisterWaitForSingleObject potrebbe aprire inavvertitamente un buco di sicurezza. La sicurezza di accesso al codice basa i controlli delle autorizzazioni relative alle autorizzazioni di tutti i chiamanti nello stack. Quando il lavoro viene accodato in un thread del pool di thread usando UnsafeRegisterWaitForSingleObject, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi. Il codice dannoso potrebbe essere in grado di sfruttarlo per evitare controlli delle autorizzazioni.
L'uso di un Mutex for waitObject
non fornisce l'esclusione reciproca per i callback perché l'API Windows sottostante usa il flag predefinito WT_EXECUTEDEFAULT
, quindi ogni callback viene inviato in un thread di pool di thread separato.
Al termine dell'uso dell'oggetto RegisteredWaitHandle restituito da questo metodo, chiamare il RegisteredWaitHandle.Unregister metodo per rilasciare i riferimenti all'handle di attesa. È consigliabile chiamare sempre il RegisteredWaitHandle.Unregister metodo, anche se si specifica true
per executeOnlyOnce
. Garbage Collection funziona in modo più efficiente se si chiama il RegisteredWaitHandle.Unregister metodo anziché a seconda del finalizzatore di attesa registrato.