ThreadPool.UnsafeRegisterWaitForSingleObject Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Regista um delegado para esperar por um WaitHandle, mas não propaga a pilha de chamada para o thread de trabalho.
Sobrecargas
| Name | Description |
|---|---|
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean) |
Regista um delegado para esperar por um WaitHandle, usando um inteiro assinado de 32 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada para o thread de trabalho. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean) |
Regista um delegado para esperar por um WaitHandle, especificando um inteiro assinado de 64 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada para o thread de trabalho. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean) |
Regista um delegado para esperar por um WaitHandle, especificando um TimeSpan valor para o time-out. Este método não propaga a pilha de chamada para o thread de trabalho. |
| UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean) |
Regista um delegado para esperar por um WaitHandle, especificando um inteiro sem sinal de 32 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada para o thread de trabalho. |
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int32, Boolean)
Regista um delegado para esperar por um WaitHandle, usando um inteiro assinado de 32 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada 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 registo. Use um WaitHandle outro que não Mutexseja .
- callBack
- WaitOrTimerCallback
O delegado a chamar quando o waitObject parâmetro é sinalizado.
- state
- Object
O objeto que é passado ao delegado.
- millisecondsTimeOutInterval
- Int32
O tempo em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testa o estado do objeto e retorna imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de time-out da função nunca passa.
- executeOnlyOnce
- Boolean
true indicar que a thread deixará de esperar no waitObject parâmetro depois de o delegado ter sido chamado; false indicar que o temporizador é reiniciado sempre que a operação de espera é concluída até que a espera seja desregistada.
Devoluções
O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registada.
- Atributos
Exceções
O millisecondsTimeOutInterval parâmetro é inferior a -1.
O interlocutor não tem a permissão necessária.
Observações
Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamada para o thread de trabalho. Isto permite que o código perca a pilha de chamadas e, assim, eleve os seus privilégios de segurança.
Atenção
Usar UnsafeRegisterWaitForSingleObject pode inadvertidamente abrir uma falha de segurança. A segurança de acesso ao código baseia as verificações de permissões nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado num thread pool usando UnsafeRegisterWaitForSingleObject, a pilha do thread pool de threads não terá o contexto dos chamadores reais. Código malicioso pode ser capaz de explorar isto para evitar verificações de permissões.
Usar um Mutex para waitObject não proporciona exclusão mútua para os callbacks porque a API Windows subjacente usa a flag padrão WT_EXECUTEDEFAULT, pelo que cada callback é despachado num thread de pool separado.
Quando terminares de usar o RegisteredWaitHandle que é devolvido por este método, chama o seu RegisteredWaitHandle.Unregister método para libertar referências ao handle de espera. Recomendamos que chame sempre o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A recolha de lixo funciona de forma mais eficiente se chamares o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do handle de espera registado.
Ver também
Aplica-se a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, Int64, Boolean)
Regista um delegado para esperar por um WaitHandle, especificando um inteiro assinado de 64 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada 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 registo. Use um WaitHandle outro que não Mutexseja .
- callBack
- WaitOrTimerCallback
O delegado a chamar quando o waitObject parâmetro é sinalizado.
- state
- Object
O objeto que é passado ao delegado.
- millisecondsTimeOutInterval
- Int64
O tempo em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testa o estado do objeto e retorna imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de time-out da função nunca passa.
- executeOnlyOnce
- Boolean
true indicar que a thread deixará de esperar no waitObject parâmetro depois de o delegado ter sido chamado; false indicar que o temporizador é reiniciado sempre que a operação de espera é concluída até que a espera seja desregistada.
Devoluções
O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registada.
- Atributos
Exceções
O millisecondsTimeOutInterval parâmetro é inferior a -1.
O interlocutor não tem a permissão necessária.
Observações
Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamada para o thread de trabalho. Isto permite que o código perca a pilha de chamadas e, assim, eleve os seus privilégios de segurança.
Atenção
Usar UnsafeRegisterWaitForSingleObject pode inadvertidamente abrir uma falha de segurança. A segurança de acesso ao código baseia as verificações de permissões nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado num thread pool usando UnsafeRegisterWaitForSingleObject, a pilha do thread pool de threads não terá o contexto dos chamadores reais. Código malicioso pode ser capaz de explorar isto para evitar verificações de permissões.
Usar um Mutex para waitObject não proporciona exclusão mútua para os callbacks porque a API Windows subjacente usa a flag padrão WT_EXECUTEDEFAULT, pelo que cada callback é despachado num thread de pool separado.
Quando terminares de usar o RegisteredWaitHandle que é devolvido por este método, chama o seu RegisteredWaitHandle.Unregister método para libertar referências ao handle de espera. Recomendamos que chame sempre o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A recolha de lixo funciona de forma mais eficiente se chamares o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do handle de espera registado.
Ver também
Aplica-se a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, TimeSpan, Boolean)
Regista um delegado para esperar por um WaitHandle, especificando um TimeSpan valor para o time-out. Este método não propaga a pilha de chamada 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 registo. Use um WaitHandle outro que não Mutexseja .
- callBack
- WaitOrTimerCallback
O delegado a chamar quando o waitObject parâmetro é sinalizado.
- state
- Object
O objeto que é passado ao delegado.
- timeout
- TimeSpan
O time-out representado por um TimeSpan. Se timeout for 0 (zero), a função testa o estado do objeto e retorna imediatamente. Se timeout for -1, o intervalo de time-out da função nunca passa.
- executeOnlyOnce
- Boolean
true indicar que a thread deixará de esperar no waitObject parâmetro depois de o delegado ter sido chamado; false indicar que o temporizador é reiniciado sempre que a operação de espera é concluída até que a espera seja desregistada.
Devoluções
O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registada.
- Atributos
Exceções
O timeout parâmetro é inferior a -1.
O timeout parâmetro é maior do que Int32.MaxValue.
O interlocutor não tem a permissão necessária.
Observações
Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamada para o thread de trabalho. Isto permite que o código perca a pilha de chamadas e, assim, eleve os seus privilégios de segurança.
Atenção
Usar UnsafeRegisterWaitForSingleObject pode inadvertidamente abrir uma falha de segurança. A segurança de acesso ao código baseia as verificações de permissões nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado num thread pool usando UnsafeRegisterWaitForSingleObject, a pilha do thread pool de threads não terá o contexto dos chamadores reais. Código malicioso pode ser capaz de explorar isto para evitar verificações de permissões.
Usar um Mutex para waitObject não proporciona exclusão mútua para os callbacks porque a API Windows subjacente usa a flag padrão WT_EXECUTEDEFAULT, pelo que cada callback é despachado num thread de pool separado.
Quando terminares de usar o RegisteredWaitHandle que é devolvido por este método, chama o seu RegisteredWaitHandle.Unregister método para libertar referências ao handle de espera. Recomendamos que chame sempre o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A recolha de lixo funciona de forma mais eficiente se chamares o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do handle de espera registado.
Ver também
Aplica-se a
UnsafeRegisterWaitForSingleObject(WaitHandle, WaitOrTimerCallback, Object, UInt32, Boolean)
Importante
Esta API não está em conformidade com CLS.
Regista um delegado para esperar por um WaitHandle, especificando um inteiro sem sinal de 32 bits para o time-out em milissegundos. Este método não propaga a pilha de chamada 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 registo. Use um WaitHandle outro que não Mutexseja .
- callBack
- WaitOrTimerCallback
O delegado a chamar quando o waitObject parâmetro é sinalizado.
- state
- Object
O objeto que é passado ao delegado.
- millisecondsTimeOutInterval
- UInt32
O tempo em milissegundos. Se o millisecondsTimeOutInterval parâmetro for 0 (zero), a função testa o estado do objeto e retorna imediatamente. Se millisecondsTimeOutInterval for -1, o intervalo de time-out da função nunca passa.
- executeOnlyOnce
- Boolean
true indicar que a thread deixará de esperar no waitObject parâmetro depois de o delegado ter sido chamado; false indicar que o temporizador é reiniciado sempre que a operação de espera é concluída até que a espera seja desregistada.
Devoluções
O RegisteredWaitHandle objeto que pode ser usado para cancelar a operação de espera registada.
- Atributos
Exceções
O interlocutor não tem a permissão necessária.
Observações
Ao contrário do RegisterWaitForSingleObject método, UnsafeRegisterWaitForSingleObject não propaga a pilha de chamada para o thread de trabalho. Isto permite que o código perca a pilha de chamadas e, assim, eleve os seus privilégios de segurança.
Atenção
Usar UnsafeRegisterWaitForSingleObject pode inadvertidamente abrir uma falha de segurança. A segurança de acesso ao código baseia as verificações de permissões nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado num thread pool usando UnsafeRegisterWaitForSingleObject, a pilha do thread pool de threads não terá o contexto dos chamadores reais. Código malicioso pode ser capaz de explorar isto para evitar verificações de permissões.
Usar um Mutex para waitObject não proporciona exclusão mútua para os callbacks porque a API Windows subjacente usa a flag padrão WT_EXECUTEDEFAULT, pelo que cada callback é despachado num thread de pool separado.
Quando terminares de usar o RegisteredWaitHandle que é devolvido por este método, chama o seu RegisteredWaitHandle.Unregister método para libertar referências ao handle de espera. Recomendamos que chame sempre o RegisteredWaitHandle.Unregister método, mesmo que especifique true para executeOnlyOnce. A recolha de lixo funciona de forma mais eficiente se chamares o RegisteredWaitHandle.Unregister método em vez de depender do finalizador do handle de espera registado.