Tôi gặp sự cố. Tôi đã viết một trình bao bọc trên FileSystemWatcher
phát hiện các thay đổi trong thư mục gốc và tất cả các thư mục con của nó. Không có gì lạ mắt:FileSystemWatcher dưới chế độ xem đơn lẻ
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = this.Root;
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.DirectoryName | NotifyFilters.FileName;
watcher.Changed += new FileSystemEventHandler (watcher_Changed);
watcher.Deleted += new FileSystemEventHandler (watcher_Deleted);
watcher.Created += new FileSystemEventHandler (watcher_Created);
watcher.Renamed += new RenamedEventHandler (watcher_Renamed);
watcher.EnableRaisingEvents = true;
Khi ở trong .NET, dưới Windows, nó hoạt động như một nét duyên dáng. Nhưng khi tôi chuyển mã sang mono và chạy mã trong OSX, nó chỉ hoạt động đúng trong thư mục gốc.
vấn đề tôi đã nhận thấy bây giờ:
Sự kiện được không huy động cho các hoạt động trong thư mục đã tồn tại dưới gốc tại thời điểm quan sát bắt đầu
Paths tôi nhận được qua
EventArgs.FullPath
tài sản là không đúng (khi tôi sao chép một tập tin vào path_to_root/some/more/subdirs/some.file, đường dẫn tôi nhận được chỉ là path_to_root/some.file).
Vấn đề với đường dẫn unproper đã được đã báo cáo một năm trước (và có vẻ như nó đã được giải quyết) nhưng mono của tôi xuất phát từ ngày năm ngoái (MonoDevelop nói trong phần Tài liệu tham khảo đó là phiên bản 4.0.0.0, nó là tất cả những gì tôi có thể nói về phân phối) và các lỗi vẫn còn đó ... Xem: https://bugzilla.xamarin.com/show_bug.cgi?id=5747
Bất kỳ ý tưởng nào? Tôi thực sự tò mò nếu có một cách giải quyết khác không yêu cầu người xem phải tự kiểm tra hệ thống tệp nhiều lần hoặc bắt đầu trình xem riêng cho mỗi thư mục dưới gốc ...
Cảm ơn bạn trước!
Có thể, điều này có thể giúp: [không-net-FileSystemWatcher-việc-với-mono-on-mac-os] [1] [1]: http://stackoverflow.com/ Câu hỏi/5727652/does-net-filesystemwatcher-work-với-mono-on-mac-os –
Thấy chủ đề này, rất tiếc là tôi không thể tìm thấy bất kỳ trợ giúp nào cho chính mình ở đó ... Cảm ơn, mặc dù! – wojtuch
nếu sửa lỗi cho 5747 không khắc phục được tình huống của bạn, bạn chỉ cần tạo một lỗi mới khác trong http://bugzilla.xamarin.com – knocte