Как узнать в каком состоянии ManualResetEvent находится?


Я использую экземпляр ManualResetEvent для управления доступом потока к ресурсу, но я сталкиваюсь с проблемами с ним. Кто-нибудь знает как я могу узнать во время отладки, каково состояние объекта?

то есть я хотел бы знать, если ManualResetEvent в настоящее время блокирует любые потоки и, возможно, даже сколько и какие потоки он блокирует.

2 63

2 ответа:

выполнить WaitOne на событие со значением тайм-аута, равным нулю.

он вернет true, если событие установлено, или false, если тайм-аут происходит. Другими словами, true -> событие установлено, false -> событие не установлено.

вот рабочий код:

private ManualResetEvent pause = new ManualResetEvent(false);
pause.WaitOne(); // caller thread pauses
pause.Set();    // another thread releases paused thread

// Check pause state
public bool IsPaused { get { return !pause.WaitOne(0); } }