FileSystemWatcher的Changed事件重複觸發問題
問題描述:
使用FileSystemWatcher類監控文本文件變化時,每次修改並保存文件,OnChanged事件都會觸發兩次。
代碼示例:
<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>
原因分析:
這是FileSystemWatcher類已知的一個限制。當應用程序(例如記事本)批量執行文件系統操作時,即使只修改了一個文件,該類也會觸發多個文件系統事件。
解決方案:
雖然NotifyFilter
屬性有時可以緩解這個問題,但在某些情況下可能需要手動過濾重複事件。
優化FileSystemWatcher使用的建議:
NotifyFilters.LastWrite
選項,因為它也可能導致事件重複觸發。 以上是為什麼我的FileSystemWatcher觸發了兩次更改的事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!