2010-12-15 56 views
5

我使用FileSystemWatcher的監視文件夾A.如果創建或複製到該文件夾​​中的文件時,它將被移動到文件夾B.FileSystemWatcher的失敗,1000個文件創作

我通過創建在文件夾中的文件右鍵單擊,選擇「新建」,選擇「文本文檔」。該文件立即移動到文件夾B.但是,如果我使用程序創建1000個文件到文件夾A中,則它們不會移動到文件夾B.因爲它看起來似乎FileSystemWatcher無法檢測到1000個文件是由程序創建的。

任何人都可以解釋這對我嗎?

回答

15

看起來像是1000個文件會超出FileSystemWatcher的緩衝區。太好了explanation here

鏈接摘錄:

緩衝區大小和錯誤事件

FileSystemWatcher類作品 捕捉所有相關的文件和 舊的改變,並將它們放置到一個 緩衝。然後一次處理一個 ,直到所有的 通知已被處理,並且 緩衝區爲空。默認情況下, 內部緩衝區的大小爲8個 千字節(8192字節)。每個事件可以爲 佔用最多16個字節的緩衝區 其數據,不包括文件名稱 。這意味着當在短時間內發生大量變化時,緩衝區可能會很快變爲 過載,並且通知可能會丟失 。

從FileSystemWatcher處理正確的錯誤事件將允許您爲這種可能性編寫代碼。例如。用你自己的邏輯檢查和/或操作錯誤事件的文件夾...

+0

謝謝保羅,你是對的。增加緩衝區大小後,我的程序成功執行。 – Linh 2010-12-15 07:09:33