С# эквивалент 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 могут работать для вас. Посмотрите, помогает ли это.