คำถามติดแท็ก filesystemwatcher

30
เหตุการณ์ FileSystemWatcher Changed ถูกยกสองครั้ง
Наэтотвопросестьответына กองมากเกินнарусском : Какрешитьповторсобытияเปลี่ยนแปลงв FileSystemWatcher? ฉันมีแอปพลิเคชันที่ฉันกำลังมองหาไฟล์ข้อความและหากมีการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับไฟล์ที่ฉันกำลังใช้ตัวOnChangedจัดการเหตุการณ์เพื่อจัดการกับเหตุการณ์ ฉันกำลังใช้NotifyFilters.LastWriteTimeแต่ยังคงมีเหตุการณ์โดนไล่ออกสองครั้ง นี่คือรหัส public void Initialize() { FileSystemWatcher _fileWatcher = new FileSystemWatcher(); _fileWatcher.Path = "C:\\Folder"; _fileWatcher.NotifyFilter = NotifyFilters.LastWrite; _fileWatcher.Filter = "Version.txt"; _fileWatcher.Changed += new FileSystemEventHandler(OnChanged); _fileWatcher.EnableRaisingEvents = true; } private void OnChanged(object source, FileSystemEventArgs e) { ....... } ในกรณีของฉันOnChangedถูกเรียกสองครั้งเมื่อฉันเปลี่ยนไฟล์ข้อความversion.txtและบันทึก

13
FileSystemWatcher vs polling เพื่อเฝ้าดูการเปลี่ยนแปลงของไฟล์
ฉันต้องตั้งค่าแอพพลิเคชั่นที่คอยดูไฟล์ที่สร้างขึ้นในไดเรกทอรีทั้งในเครื่องหรือในไดรฟ์เครือข่าย ตัวเลือกการFileSystemWatcherสำรวจหรือการจับเวลาจะเป็นตัวเลือกที่ดีที่สุดหรือไม่ ฉันเคยใช้วิธีการทั้งสองในอดีต แต่ไม่ครอบคลุม มีปัญหาอะไรบ้าง (ประสิทธิภาพความน่าเชื่อถือ ฯลฯ ) มีวิธีใดบ้าง


3
การใช้ FileSystemWatcher เพื่อมอนิเตอร์ไดเร็กทอรี
ฉันใช้ Windows Forms Application เพื่อตรวจสอบไดเร็กทอรีและย้ายไฟล์ที่ทิ้งไว้ในไดเร็กทอรีอื่น ในขณะนี้มันจะคัดลอกไฟล์ไปยังไดเร็กทอรีอื่น แต่เมื่อมีการเพิ่มไฟล์อื่นมันจะจบลงโดยไม่มีข้อความแสดงข้อผิดพลาด บางครั้งจะคัดลอกสองไฟล์ก่อนที่จะสิ้นสุดในไฟล์ที่สาม นี่เป็นเพราะฉันใช้ Windows Form Application แทนที่จะเป็นแอปคอนโซลใช่หรือไม่ มีวิธีใดบ้างที่ฉันสามารถหยุดโปรแกรมไม่ให้สิ้นสุดและเฝ้าดูไดเร็กทอรีต่อไป private void watch() { this.watcher = new FileSystemWatcher(); watcher.Path = path; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Filter = "*.*"; watcher.Changed += OnChanged; watcher.EnableRaisingEvents = true; } private void OnChanged(object source, FileSystemEventArgs e) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.