2010-01-19 6 views
12

В C# в чем разница между событием ручного сброса, autoresetevent. Также, когда нужно использовать одно и то же. В чем разница между установкой autoresetevent на true или false.событие ручного сброса, событие автоматического сброса

+0

Возможный дубликат [В чем разница между ManualResetEvent и AutoResetEvent в .net?] (Http://stackoverflow.com/questions/153877/what-is-the-difference-between-manualresetevent-and-autoresetevent-in -net) – Sung

+1

Вот удивительное объяснение с картинками :) http://multithreads.blogspot.de/2007/09/eventwaithandler-autoresetevent-and.html – VladL

ответ

16

Для ManualResetEvent после того, как вы назвали Set(), вы должны сознательно назвать Reset(), чтобы вернуть его в unsignaled состояние такое, что вызывает к WaitOne() заблокирует.

Это не обязательно для AutoResetEvent.

Документация довольно проста в MSDN для ManualResetEvent и AutoResetEvent.

+0

Также обратите внимание, что AutoResetEvent.Set() освобождает только один ожидающий поток, тогда как ManualResetEvent.Set() освобождает все ожидающие потоки и больше не блокирует (пока вы не вызовете Сброс). –

Смежные вопросы