C # эквивалентно Java ждать и уведомлять? - PullRequest
50 голосов
/ 16 октября 2008

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

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

Ответы [ 2 ]

88 голосов
/ 16 октября 2008

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

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

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

См. мой учебник потоков или Джо Албахари для более подробной информации.

1 голос
/ 16 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...