ThreadPool.UnsafeRegisterWaitForSingleObject Método

Definição

Registra um delegado para aguardar um WaitHandle, mas não propaga a pilha de chamadas para o thread de trabalho.

Sobrecargas

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

Registra um delegado para aguardar um WaitHandleinteiro com sinal de 32 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Registra um delegado para aguardar um WaitHandleinteiro com sinal de 64 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Registra um delegado para aguardar um WaitHandle, especificando um TimeSpan valor para o tempo limite. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Registra um delegado para aguardar um WaitHandleinteiro sem sinal de 32 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Registra um delegado para aguardar um WaitHandleinteiro com sinal de 32 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Parâmetros

waitObject
WaitHandle

O WaitHandle registro a ser registrado. Use um WaitHandle diferente de Mutex.

callBack
WaitOrTimerCallback

O delegado a ser chamado quando o waitObject parâmetro é sinalizado.

state
Object

O objeto que é passado para o delegado.

millisecondsTimeOutInterval
Int32

O tempo limite em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testará o estado do objeto e retornará imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de tempo limite da função nunca será decorrido.

executeOnlyOnce
Boolean

true para indicar que o thread não aguardará mais o waitObject parâmetro depois que o delegado tiver sido chamado; false para indicar que o temporizador é redefinido sempre que a operação de espera for concluída até que a espera não seja registrada.

Retornos

O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registrada.

Atributos

Exceções

O millisecondsTimeOutInterval parâmetro é menor que -1.

O chamador não tem a permissão necessária.

Comentários

Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamadas para o thread de trabalho. Isso permite que o código perca a pilha de chamadas e, assim, eleve seus privilégios de segurança.

Caution

Usar UnsafeRegisterWaitForSingleObject pode abrir inadvertidamente uma falha de segurança. A segurança de acesso ao código baseia suas verificações de permissão nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado em um thread do pool de threads usando UnsafeRegisterWaitForSingleObject, a pilha do thread do pool de threads não terá o contexto dos chamadores reais. Código mal-intencionado pode ser capaz de explorar isso para evitar verificações de permissão.

Usar um Mutex para waitObject não fornece exclusão mútua para os retornos de chamada porque a API de Windows subjacente usa o sinalizador padrão WT_EXECUTEDEFAULT, portanto, cada retorno de chamada é expedido em um thread separado do pool de threads.

Quando terminar de usar o RegisteredWaitHandle que é retornado por esse método, chame seu RegisteredWaitHandle.Unregister método para liberar referências ao identificador de espera. Recomendamos que você sempre chame o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A coleta de lixo funcionará com mais eficiência se você chamar o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do identificador de espera registrado.

Confira também

Aplica-se a

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

Registra um delegado para aguardar um WaitHandleinteiro com sinal de 64 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Parâmetros

waitObject
WaitHandle

O WaitHandle registro a ser registrado. Use um WaitHandle diferente de Mutex.

callBack
WaitOrTimerCallback

O delegado a ser chamado quando o waitObject parâmetro é sinalizado.

state
Object

O objeto que é passado para o delegado.

millisecondsTimeOutInterval
Int64

O tempo limite em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testará o estado do objeto e retornará imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de tempo limite da função nunca será decorrido.

executeOnlyOnce
Boolean

true para indicar que o thread não aguardará mais o waitObject parâmetro depois que o delegado tiver sido chamado; false para indicar que o temporizador é redefinido sempre que a operação de espera for concluída até que a espera não seja registrada.

Retornos

O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registrada.

Atributos

Exceções

O millisecondsTimeOutInterval parâmetro é menor que -1.

O chamador não tem a permissão necessária.

Comentários

Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamadas para o thread de trabalho. Isso permite que o código perca a pilha de chamadas e, assim, eleve seus privilégios de segurança.

Caution

Usar UnsafeRegisterWaitForSingleObject pode abrir inadvertidamente uma falha de segurança. A segurança de acesso ao código baseia suas verificações de permissão nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado em um thread do pool de threads usando UnsafeRegisterWaitForSingleObject, a pilha do thread do pool de threads não terá o contexto dos chamadores reais. Código mal-intencionado pode ser capaz de explorar isso para evitar verificações de permissão.

Usar um Mutex para waitObject não fornece exclusão mútua para os retornos de chamada porque a API de Windows subjacente usa o sinalizador padrão WT_EXECUTEDEFAULT, portanto, cada retorno de chamada é expedido em um thread separado do pool de threads.

Quando terminar de usar o RegisteredWaitHandle que é retornado por esse método, chame seu RegisteredWaitHandle.Unregister método para liberar referências ao identificador de espera. Recomendamos que você sempre chame o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A coleta de lixo funcionará com mais eficiência se você chamar o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do identificador de espera registrado.

Confira também

Aplica-se a

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

Registra um delegado para aguardar um WaitHandle, especificando um TimeSpan valor para o tempo limite. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Parâmetros

waitObject
WaitHandle

O WaitHandle registro a ser registrado. Use um WaitHandle diferente de Mutex.

callBack
WaitOrTimerCallback

O delegado a ser chamado quando o waitObject parâmetro é sinalizado.

state
Object

O objeto que é passado para o delegado.

timeout
TimeSpan

O tempo limite representado por um TimeSpan. Se timeout for 0 (zero), a função testará o estado do objeto e retornará imediatamente. Se timeout for -1, o intervalo de tempo limite da função nunca será decorrido.

executeOnlyOnce
Boolean

true para indicar que o thread não aguardará mais o waitObject parâmetro depois que o delegado tiver sido chamado; false para indicar que o temporizador é redefinido sempre que a operação de espera for concluída até que a espera não seja registrada.

Retornos

O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registrada.

Atributos

Exceções

O timeout parâmetro é menor que -1.

O timeout parâmetro é maior que Int32.MaxValue.

O chamador não tem a permissão necessária.

Comentários

Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamadas para o thread de trabalho. Isso permite que o código perca a pilha de chamadas e, assim, eleve seus privilégios de segurança.

Caution

Usar UnsafeRegisterWaitForSingleObject pode abrir inadvertidamente uma falha de segurança. A segurança de acesso ao código baseia suas verificações de permissão nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado em um thread do pool de threads usando UnsafeRegisterWaitForSingleObject, a pilha do thread do pool de threads não terá o contexto dos chamadores reais. Código mal-intencionado pode ser capaz de explorar isso para evitar verificações de permissão.

Usar um Mutex para waitObject não fornece exclusão mútua para os retornos de chamada porque a API de Windows subjacente usa o sinalizador padrão WT_EXECUTEDEFAULT, portanto, cada retorno de chamada é expedido em um thread separado do pool de threads.

Quando terminar de usar o RegisteredWaitHandle que é retornado por esse método, chame seu RegisteredWaitHandle.Unregister método para liberar referências ao identificador de espera. Recomendamos que você sempre chame o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A coleta de lixo funcionará com mais eficiência se você chamar o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do identificador de espera registrado.

Confira também

Aplica-se a

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

Importante

Esta API não está em conformidade com CLS.

Registra um delegado para aguardar um WaitHandleinteiro sem sinal de 32 bits para o tempo limite em milissegundos. Esse método não propaga a pilha de chamadas para o thread de trabalho.

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

Parâmetros

waitObject
WaitHandle

O WaitHandle registro a ser registrado. Use um WaitHandle diferente de Mutex.

callBack
WaitOrTimerCallback

O delegado a ser chamado quando o waitObject parâmetro é sinalizado.

state
Object

O objeto que é passado para o delegado.

millisecondsTimeOutInterval
UInt32

O tempo limite em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testará o estado do objeto e retornará imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de tempo limite da função nunca será decorrido.

executeOnlyOnce
Boolean

true para indicar que o thread não aguardará mais o waitObject parâmetro depois que o delegado tiver sido chamado; false para indicar que o temporizador é redefinido sempre que a operação de espera for concluída até que a espera não seja registrada.

Retornos

O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registrada.

Atributos

Exceções

O chamador não tem a permissão necessária.

Comentários

Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamadas para o thread de trabalho. Isso permite que o código perca a pilha de chamadas e, assim, eleve seus privilégios de segurança.

Caution

Usar UnsafeRegisterWaitForSingleObject pode abrir inadvertidamente uma falha de segurança. A segurança de acesso ao código baseia suas verificações de permissão nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado em um thread do pool de threads usando UnsafeRegisterWaitForSingleObject, a pilha do thread do pool de threads não terá o contexto dos chamadores reais. Código mal-intencionado pode ser capaz de explorar isso para evitar verificações de permissão.

Usar um Mutex para waitObject não fornece exclusão mútua para os retornos de chamada porque a API de Windows subjacente usa o sinalizador padrão WT_EXECUTEDEFAULT, portanto, cada retorno de chamada é expedido em um thread separado do pool de threads.

Quando terminar de usar o RegisteredWaitHandle que é retornado por esse método, chame seu RegisteredWaitHandle.Unregister método para liberar referências ao identificador de espera. Recomendamos que você sempre chame o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A coleta de lixo funcionará com mais eficiência se você chamar o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do identificador de espera registrado.

Confira também

Aplica-se a