Ответ 1
Попробуйте WaitHandle.WaitOne(0)
Если миллисекундыTimeout равно нулю, метод не блокируется. Он проверяет состояние дескриптора ожидания и немедленно возвращает его.
У меня есть WaitHandle, и я хотел бы знать, как проверить, был ли WaitHandle уже установлен или нет.
Примечание.. Я могу добавить переменную bool и всякий раз, когда используется метод Set(), установите для переменной значение true, но это поведение должно быть построено где-то в WaitHandle.
Спасибо за помощь!
Попробуйте WaitHandle.WaitOne(0)
Если миллисекундыTimeout равно нулю, метод не блокируется. Он проверяет состояние дескриптора ожидания и немедленно возвращает его.
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
Используйте один из методов Wait...
на WaitHandle
, который принимает значение тайм-аута, например WaitOne
и передать тайм-аут 0.
Вы можете использовать метод WaitOne (int millisecondsTimeout, bool exitContext) и передать значение 0 для периода времени. Он вернется сразу.
bool isSet = yourWaitHandle.WaitOne(0, true);