Должен ли сценарий для событий, связанных с многопоточностью в C #? - PullRequest
1 голос
/ 12 октября 2010

Мне интересно, в каком сценарии мы должны использовать технику событий в многопоточности, и другого пути нет?Я видел случаи, когда мы можем использовать другие методы синхронизации, такие как ожидание и импульс монитора, для реализации этого.

Может кто-нибудь помочь мне разобраться в событиях в многопоточности?

Ответы [ 3 ]

3 голосов
/ 12 октября 2010

Там нет ни одного. Вы всегда можете справиться с этим на более низком уровне абстракции (пока вы не нажмете 1 или 0, вы всегда можете обработать что-либо на более низком уровне абстракции). Тем не менее, это часто чище и / или проще сделать это. http://msdn.microsoft.com/en-us/library/ms228966.aspx дает советы по этому вопросу, но не существует "обязательных сценариев".

3 голосов
/ 12 октября 2010

Я бы поддержал ответ @Jon Hanna, но подчеркну тот факт, что .Net-события реализуют обычно используемый шаблон (Observer) с достаточной элегантностью, так что в большинстве случаев это просто извращение, чтобы реализовать его любым другим способом.

Это демонстрируется тем, как события возникают в самих классах .Net Framework, а не просто в качестве языковой конструкции для программистов приложений. Это первоклассная языковая функция, и поэтому сознательно избегать их использования не имеет смысла. Это все равно, что избегать циклов foreach только потому, что есть другие способы достижения той же цели.

Смотрите здесь для обзора Шаблон наблюдателя и как события обращаются к этому в .Net . Маловероятно, что все, что вы создадите с использованием других методов программирования .Net, будет соответствовать простоте и выразительности реализации event.

2 голосов
/ 12 октября 2010

Многопоточное программирование с асинхронным шаблоном на основе событий

В вышеприведенной статье вы найдете несколько отличных ресурсов о том, как использовать события в многопоточной среде.

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