朋友有一個需求
就是想要監控某個磁碟機
當他大小超過一定的Size後要做出一些動作來
其實我也不知道要怎麼寫
朋友有一個需求
就是想要監控某個磁碟機
當他大小超過一定的Size後要做出一些動作來
其實我也不知道要怎麼寫
所以就先推測
- 想必知道這支程式一定跟會跟事件有關係。
- 應該是在System.IO中處理。
好吧,那就朝這兩條線索找
在IDE中輸入System.IO後慢慢看有提供哪些類別
到MSDN查了一下發現FileSystemWatcher是我需要的材料之一
然後繼續接下來看到了
OK,有了這兩個以後就可以開始幹活囉
首先我在應用程式中設定watcher
_fileSysWatcher = new FileSystemWatcher(_watchDir);
_fileSysWatcher.EnableRaisingEvents = true;
_fileSysWatcher.IncludeSubdirectories = true;
_fileSysWatcher.NotifyFilter = NotifyFilters.Size | NotifyFilters.FileName;
_fileSysWatcher.Changed += new FileSystemEventHandler(_fileSysWatch_Changed);
_fileSysWatcher.Deleted += new FileSystemEventHandler(_fileSysWatch_Changed);
_fileSysWatcher.Created += new FileSystemEventHandler(_fileSysWatch_Changed);
}
將InitWtach放在InitializeComponent之後
InitializeComponent();
InitWatch();
}
在事件中補上要做的事
CheckVolume();
}
MessageBox.Show((_driveInfo.TotalFreeSpace / Math.Pow(1023, 3)).ToString());
}
使用FileSystemWatcher註冊事件的過程中發現新增一個檔案其實不只觸發一次的change事件
而是4次,我猜想change的順序應該是
create
change(影響目錄的大小)
change(Update Ffile CreationTime)
change(Update Ffile LastAccess)
吧
所以還是需要設定NotifyFilter
不然這樣會捕捉到其他不需要的事件
最後請參考這個sample小程式吧
安裝完後桌面會有source的資料夾