Коли потік починає дію, яка має бути завершена, перш ніж продовжаться інші потоки, він викликає ManualResetEvent. Скинути, щоб перевести ManualResetEvent у стан без сигналу. Цей потік можна розглядати як керуючий ManualResetEvent. Потоки, які викликають ManualResetEvent.
Типи об’єктів подій Windows пропонує два види подій: Подія автоматичного скидання після встановлення повертається до несигналізованого стану після звільнення принаймні одного потоку, який очікує на нього. З іншого боку, коли встановлено подію ручного скидання, для переходу до несигналізованого стану потрібне явне скидання.
ManualResetEventSlim використовує активне обертання протягом короткого часу, поки очікує сигналу про подію. Коли час очікування короткий, обертання може бути набагато дешевшим, ніж очікування за допомогою ручок очікування.
Як використовувати ManualResetEvent у C#, щоб заблокувати один потік, доки не завершиться інший
- Створення екземпляра класу ManualResetEvent;
- Запустіть основну нитку;
- Коли запускається асинхронний робочий потік, викликайте метод WaitOne() об’єкта ManualResetEvent, щоб заблокувати основний потік;
Подія автоматичного скидання об'єкти автоматично змінюються з сигнальних на несигнальні після звільнення одного потоку очікування. Скидання події, яку вже скинуто, не має ефекту.