ThreadPool.UnsafeRegisterWaitForSingleObject Método

Definição

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.

Ver também

Aplica-se a