2011-11-20 34 views
8

Có thư viện nào để nghe thư mục không? Tôi có nghĩa là tôi có một thư mục và tôi muốn được thông báo về bất kỳ thay đổi nào trong đó.Trình nghe thư mục trong C#

Ví dụ: khi một số tệp bị xóa hoặc được tạo trong thư mục, tôi muốn được thông báo. Tôi không muốn sử dụng bộ hẹn giờ và kiểm tra thư mục theo cách thủ công để phát hiện bất kỳ thay đổi nào.

+0

Tôi đã chỉnh sửa câu hỏi của bạn tốt nhất có thể nhưng tôi không thể hiểu "và kiểm tra thư mục đã xảy ra sự cố khác", vì vậy tôi không thể diễn đạt lại bằng tiếng Anh chính xác. –

+0

@JonSkeet cổ vũ để chỉnh sửa. "sự kiện hẹn giờ kiểm tra thư mục nếu một cái gì đó xảy ra như tạo ra hoặc xóa một tập tin trên đó";) –

+1

Xem liệu chỉnh sửa cuối cùng này có phản ánh ý của bạn hay không. –

Trả lời

21

Có vẻ như bạn đang tìm kiếm FileSystemWatcher. Xem tài liệu để biết ví dụ hoàn chỉnh.

+0

Sách Tham khảo "Lập trình Visual Basic 2010" nói sau (trang 863): __The FileSystemWatcher dường như có một vài vấn đề. Đôi khi nó bị choáng ngợp và bỏ lỡ những thay đổi mà nó sẽ thấy và nó dường như bị lẫn lộn trong một số trường hợp và hoặc ngừng tăng sự kiện hoặc tăng sự kiện trùng lặp. Kiểm soát hy vọng sẽ cải thiện theo thời gian nhưng bây giờ, sử dụng nó thận trọng .__ – JohnyL

+0

@JohnyL: Nó chắc chắn có thể được sử dụng tồi tệ, và * không * cần phải được sử dụng cẩn thận, nhưng điều đó nghe giống như một cảnh báo quá rộng đối với tôi. –

+0

Tôi muốn sử dụng ShellObjectWatcher từ Windows API Code Pack, nhưng - than ôi - nó không vứt bỏ đối tượng, quá trình chỉ bị kẹt trong Process Explorer. Vì vậy, tôi quyết định học SHChangeNotifyRegister bản thân mình (mà Code Pack dựa vào). Tôi đã sử dụng [this] (https://dotnettoys.wordpress.com/2012/05/28/daily-problems-how-to-write-a-filewatcher-in-three-possible-ways-today/) bài viết để biết thông tin . – JohnyL

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