Rumah >pembangunan bahagian belakang >C++ >Mengapa FileSystemwatcher saya mencetuskan acara yang diubah dua kali?
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:
<code class="language-csharp">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) { // ...事件处理逻辑... }</code>Ini adalah batasan yang diketahui oleh kelas FileSystemwatcher. Apabila aplikasi (seperti Notepad) melakukan sistem fail dalam kelompok, walaupun hanya satu fail yang diubahsuai, kelas ini akan mencetuskan pelbagai peristiwa sistem fail.
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!