С# эквивалент java wait и notify?

Я знаю, что вы можете заблокировать объект в С# с помощью блокировки, но можете ли вы отказаться от блокировки и ждать чего-то еще, чтобы уведомить вас о том, что он изменился, как вы можете в java, с ожиданием и уведомлением?

Мне кажется, что синхронизация и блокировка в java и С# соответственно являются сингулярными.

Ответ 1

Эквивалентная функциональность (включая нормальную блокировку) находится в классе Monitor.

foo.notify() => Monitor.Pulse(foo)
foo.notifyAll() => Monitor.PulseAll(foo)
foo.wait() =>  Monitor.Wait(foo)

Оператор lock в С# эквивалентен вызову Monitor.Enter и Monitor.Exit с соответствующим блоком try/finally.

См. мой учебник по потокам или Joe Albahari one для более подробная информация.

Ответ 2

Я думаю, Wait Handles могут работать для вас. Посмотрите, помогает ли это.