Подтвердить что ты не робот

Как проверить, установлен ли WaitHandle?

У меня есть WaitHandle, и я хотел бы знать, как проверить, был ли WaitHandle уже установлен или нет.

Примечание.. Я могу добавить переменную bool и всякий раз, когда используется метод Set(), установите для переменной значение true, но это поведение должно быть построено где-то в WaitHandle.

Спасибо за помощь!

4b9b3361

Ответ 1

Попробуйте WaitHandle.WaitOne(0)

Если миллисекундыTimeout равно нулю, метод не блокируется. Он проверяет состояние дескриптора ожидания и немедленно возвращает его.

Ответ 2

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));   

Вывод:

Установлено: False

Установлено: True

Ответ 3

Используйте один из методов Wait... на WaitHandle, который принимает значение тайм-аута, например WaitOne и передать тайм-аут 0.

Ответ 4

Вы можете использовать метод WaitOne (int millisecondsTimeout, bool exitContext) и передать значение 0 для периода времени. Он вернется сразу.

bool isSet = yourWaitHandle.WaitOne(0, true);