Pergunta

Eu tenho um WaitHandle e eu gostaria de saber como verificar se o WaitHandle já foi definido ou não.

Nota: Eu posso adicionar uma variável bool e sempre que o método Set() é usado definir a variável de verdade, mas este comportamento deve ser construído em WaitHandle em algum lugar.

Obrigado pela ajuda!

Foi útil?

Solução

tente waithandle.waitone (0)

.

Se o Millisecondstimeout é zero, o método não bloqueará.Testa o estado da alça de espera e retorna imediatamente.

Outras dicas

const int DoNotWait = 0;
                          
ManualResetEvent waitHandle = new ManualResetEvent(false);                   

Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));
         
waitHandle.Set(); 

Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));   

Saída:

Está definido:Falso

Está definido:True

use um dos métodos Wait... em WaitHandle que leva umValor de tempo limite, como WaitOne e passe um tempo limite de 0.

Você pode usar o WaitOne(int millisecondsTimeout, bool exitContext) método e passar de 0 para o intervalo de tempo.Ele irá retornar imediatamente.

bool isSet = yourWaitHandle.WaitOne(0, true);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top