2009-03-09 23 views
6

Điều gì đó lôi cuốn tôi và tôi không tìm thấy bất kỳ tài nguyên nào về điều này.FileSystemWatcher hoạt động như thế nào trên một thư mục máy tính khác?

Làm thế nào để FileSystemWatcher biết khi một tệp trên máy tính "A" được tạo/xóa/thay đổi/đổi tên?

Tôi nghĩ rằng điều này làm việc với bỏ phiếu, (người quan sát thăm dò máy chủ để kiểm tra cập nhật), nhưng sau khi xác minh hoạt động mạng với Wireshark tôi thấy rằng bỏ phiếu không được sử dụng. Giao thức SMB có sử dụng mẫu quan sát/quan sát không?

Trong trường hợp này, máy chủ có thể biết khi nào một khách hàng không quan sát anh ta nữa?

Hậu quả khi mạng rơi trong khi quan sát và quay lại ngay sau đó là gì?

Sử dụng FileSystemWatcher trên máy tính khác dường như quá dễ dàng đến mức khó tin ...

Trả lời

8

Sử dụng FileSystemWatcher trên một máy tính khác dường như quá dễ dàng đến mức khó tin ...

Nó kinda là. API cơ bản - ReadDirectoryChanges() - mở ra kết nối với máy chủ, chịu trách nhiệm phản hồi khi có sự thay đổi. Nếu kết nối đó bị ngắt vì một lý do nào đó hoặc bạn gặp phải giới hạn kết nối của hệ điều hành mà bạn đang kết nối, thì bạn sẽ không nhận được thông báo.

Tôi nhận thấy rằng cuộc thăm dò ý kiến ​​định kỳ hơn (với khoảng thời gian khá dài) và chỉ sử dụng FileSystemWatcher như một cách để phản hồi nhanh chóng các thay đổi giữa các cuộc thăm dò ý kiến.

0

Tôi nghĩ FileSystemWatcher không sử dụng một quan sát viên/mô hình quan sát được dựa trên nền tảng Win32 API. Không chắc chắn về các sự kiện thực tế nhưng có lẽ khi bạn khởi tạo đối tượng FileSystemWatcher để xem đường dẫn mạng và đặt thuộc tính EnableRaisingEvents, nó tự gắn nó vào hậu trường với thư mục như một người quan sát bằng cách gắn vào các sự kiện được API Win32 đưa ra thư mục nằm trên cùng một máy tính.

Trong mẫu thiết kế Observer, đối tượng (quan sát) không bao giờ biết số lượng hoặc loại người quan sát do đó điểm về máy tính khác biết khi FSW không còn xem là không liên quan.

Nếu mạng bị tắt trong khi sự kiện được nâng lên thì hơi khó hiểu - người khác sẽ phải giúp bạn ở đó.

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