2010-01-19 26 views
12

Trong C# sự khác biệt giữa sự kiện đặt lại thủ công, tự động xác định là gì. Ngoài ra khi nên sử dụng như nhau. Sự khác biệt giữa thiết lập autoresetevent thành true hoặc false.sự kiện đặt lại thủ công, Sự kiện đặt lại tự động

+0

có thể trùng lặp của [Sự khác biệt giữa ManualResetEvent và AutoResetEvent trong .net là gì?] (Http://stackoverflow.com/questions/153877/what-is-the-difference-between-manualresetevent-and-autoresetevent-in -net) – Sung

+1

Đây là một lời giải thích tuyệt vời với hình ảnh :) http://multithreads.blogspot.de/2007/09/eventwaithandler-autoresetevent-and.html – VladL

Trả lời

16

Đối với ManualResetEvent, khi bạn đã gọi Set(), bạn phải cố tình gọi Reset() để đưa trở lại trạng thái chưa được đánh dấu sao cho các cuộc gọi đến WaitOne() sẽ chặn.

Điều này không cần thiết cho AutoResetEvent.

Tài liệu này khá tốt trên MSDN cho ManualResetEventAutoResetEvent.

+0

Cũng lưu ý rằng AutoResetEvent.Set() chỉ phát hành một chuỗi chờ, trong khi ManualResetEvent.Set() giải phóng tất cả các chuỗi chờ và không chặn nữa (cho đến khi bạn gọi Reset). –

Các vấn đề liên quan