我已經使用了fs watcher時間,FSwatcher創建事件觸發器時創建的最大挑戰(沒有實際的最終大小),這意味着如果有人插入在文件共享中創建了一個巨大的文件「gigs」,它將被鎖定,直到創建者應用程序發佈的文件,這樣我才能在測試環境中看到完美的效果,在這種環境中可以顯示有限的文件和數據。對於生產fswatcher結合後臺工作人員和定時器可以成爲解決方案,例如FSwatcher創建的甚至應該將任務交給後臺工作人員。儘管如此,我還是看到了一些我需要每小時計時器來移動剩餘文件的情況,當用戶在幾個小時內仍在使用這些文件時,出現了一些奇怪的情況。我發現完美的解決方案使用FSwatcher以及多線程和定時器。我假設你想要一個Windows服務,而不是基於表單或基於Web的應用程序。對於文件更改的事件,我不會使用這個,如果任何應用程序在文件流中打開文件,它將執行幾個更改,但仍然鎖定文件,所以你可以不做任何事情,也許你可以添加到列表,以便能夠稍後處理它,但據我所知,在這種情況下,如果文件在流中被編輯,它將繼續激發你的事件。所以我的建議使用創建的事件在事件中設置了一些超時來檢查真正的快速讀取可用性,如5秒,如果這沒有發生後臺線程,甚至bg踩仍然不能處理該文件,有一個計時器保持重試在所有文件中,這兩種情況下都沒有處理(像大文件和服務終止,然後處理後臺線程)。
概要FSwatcher引發事件,但並不意味着文件可以被訪問和準備處理,它只是監視文件系統並激發你訂閱的事件。事件觸發,但如果你沒有足夠快地處理它,你可能會錯過下一個事件,所以使用事件進行非常快速的動作,如果你創建了很多文件,比如將它們添加到列表中,任務!如果你在一個事件中花費太多時間,你可能會錯過一些,所以趕上事件,立即交接任務,並等待下一個:)
這個以前的問題/答案應該給你一個好的開始:http:/ /stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-file-changes。簡而言之,FileSystemWatcher底層的Win32緩衝區可能會溢出 – Kevin
[.NETFramwork 4中的FileSystemWatcher的可靠程度如何?](http://stackoverflow.com/questions/7191380/how-reliable-is-the-filesystemwatcher-in -netframwork-4) – Yuck