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

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

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

Спасибо за справку!

39
задан Martin Vseticka 22 July 2010 в 20:24
поделиться

4 ответа

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

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

55
ответ дан 27 November 2019 в 02:40
поделиться

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

2
ответ дан 27 November 2019 в 02:40
поделиться

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

bool isSet = yourWaitHandle.WaitOne(0, true);
1
ответ дан 27 November 2019 в 02:40
поделиться
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));   

Вывод:

Установлено: Ложь

Установлено: Истина

6
ответ дан 27 November 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: