2013-10-08 169 views
2

我以前用過FileSystemWatcher。不過,我希望有人能夠解釋它是如何在幕後工作的。FileSystemWatcher對硬盤有什麼影響?

我打算利用它在我提出一個應用程序,它會監視大約5驅動器,也許30萬文件。

是否FileSystemWatcher的實際完成驅動器上的「檢查」 - 如,將它的驅動器上造成磨損/撕裂?同時它影響的硬盤驅動器的能力,以「休眠」

這是我不明白它是如何工作 - 如果它像一個計時器掃描驅動器等...或者如果等待一些從類型的通知它做任何事情之前的操作系統。

我只是不想要實現是要額外造成一些讀取的驅動器上,並從睡眠保持驅動。

回答

5

沒有那樣的。文件系統驅動程序簡單地監視在您選擇的過濾器上運行的其他程序所請求的正常文件操作。如果存在匹配,則它將一個條目添加到記錄操作和文件名的內部緩衝區中。其中完成驅動程序請求並獲得一個事件在您的程序中運行。您將從該緩衝區獲得傳遞給您的操作的詳細信息。

所以沒有什麼實際發生的操作本身,沒有多餘的磁盤活動的。這只是運行的軟件。開銷很小,沒有什麼明顯的變慢。

+0

+1我總是想知道如何實現IO更改通知 – Amro

2

簡短的答案是否定的。 FileSystemWatcher調用ReadDirectoryChangesW API將它傳遞給一個異步標誌。基本上,Windows將在發生目錄更改時將數據存儲在分配的緩衝區中。此函數返回該緩衝區中的數據,然後FileSystemWatcher將其轉換爲適合您的良好通知。

相關問題