Penerangan Masalah:
Apabila memantau perubahan fail teks menggunakan kelas FileSystemwatcher, setiap kali ia diubahsuai dan disimpan fail, acara OnChanged akan mencetuskan dua kali.
Contoh kod:
Analisis Punca:
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) { // ...事件处理逻辑... }
Penyelesaian:
Walaupun atribut kadang -kadang boleh mengurangkan masalah ini, dalam beberapa kes, mereka mungkin perlu menapis dan mengulangi insiden secara manual.
Mengoptimumkan cadangan yang digunakan oleh FileSystemwatcher:
Penapis peristiwa berulang berdasarkan keadaan lain (seperti saiz fail atau kandungan). NotifyFilter
Memandangkan perpustakaan ketiga yang menyediakan fungsi FileSystemwatcher yang lebih baik.
Atas ialah kandungan terperinci Mengapa FileSystemwatcher saya mencetuskan acara yang diubah dua kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!