Có vẻ như bạn muốn ghi vào tệp nhật ký của mình khi tệp nhật ký của bạn được đọc bên ngoài hoặc điều gì đó có hiệu lực. Nếu đúng như vậy, có một giá trị NotifyFilters, LastAccess. Đảm bảo điều này được đặt làm một trong các cờ trong thuộc tính FileSystemWatcher.NotifyFilter của bạn. Thay đổi trong lần truy cập cuối cùng sẽ kích hoạt sự kiện Đã thay đổi trên FileSystemWatcher.
Hiện tại, FileSystemWatcher không cho phép bạn phân biệt trực tiếp giữa đọc và thay đổi; cả hai đều kích hoạt sự kiện đã thay đổi dựa trên "thay đổi" đối với LastAccess. Vì vậy, nó sẽ là không thể xem được cho một số lượng lớn các tập tin. Tuy nhiên, dường như bạn biết tệp nào bạn đang xem, vì vậy nếu bạn có đối tượng FileInfo cho tệp đó và FileSystemWatcher đã kích hoạt sự kiện đã thay đổi của nó, bạn có thể nhận được tệp mới và so sánh giá trị LastAccessTime. Nếu thời gian truy cập thay đổi và LastWriteTime không, tệp của bạn chỉ được đọc. Bây giờ, trong điều kiện đơn giản nhất, những thay đổi bạn thực hiện đối với tệp trong khi tệp đang được đọc sẽ không hiển thị ngay lập tức trong ứng dụng khác, cũng như bạn sẽ không thể "đến đó trước", khóa tệp và viết cho nó trước khi họ nhìn thấy nó. Vì vậy, bạn không thể sử dụng FileSystemWatcher để "chặn" một yêu cầu đọc và hiển thị nội dung bạn muốn ứng dụng đó xem. Cách duy nhất mà người dùng của ứng dụng khác có thể thấy những gì bạn vừa viết là nếu ứng dụng cũng đang xem tệp và tải lại tệp. Điều đó sẽ kích hoạt một sự kiện đã thay đổi khác, gây ra một vòng lặp vô hạn miễn là ứng dụng kia tiếp tục tải lại tệp.
Bạn cũng sẽ nhận được sự kiện đã thay đổi để đọc và viết. Mở một tệp trong trình soạn thảo văn bản (hầu như mọi thứ sẽ làm), thực hiện một số thay đổi, sau đó lưu sẽ kích hoạt hai sự kiện đã thay đổi nếu bạn đang tìm kiếm các thay đổi đối với Lần truy cập cuối cùng. Cái đầu tiên sẽ tắt khi tập tin được mở bởi trình soạn thảo; tại thời điểm đó, bạn có thể không thể nói rằng một ghi sẽ xảy ra, vì vậy nếu bạn đang tìm kiếm truy cập chỉ đọc thuần túy vào tệp thì bạn là SOL.
điều này có vẻ như là một yêu cầu lạ. bạn có thể mở rộng về mục tiêu cuối cùng của bạn nhiều hơn một chút không. – luke
@luke - Những gì tôi muốn làm là mã hóa một phần của tập tin, nhưng khi một ứng dụng web (mà tôi không có quyền kiểm soát) đi đọc tập tin đó tôi sẽ giải mã phần mã hóa cho nó. –
có vẻ như cách tốt hơn để giải quyết vấn đề này là chỉ cần thiết lập kiểm soát truy cập chi tiết hơn để ứng dụng web (và ứng dụng của bạn) có thể đọc tệp, sau đó bạn sẽ không phải mã hóa nó. – luke