監控磁碟機

朋友有一個需求

就是想要監控某個磁碟機

當他大小超過一定的Size後要做出一些動作來

其實我也不知道要怎麼寫

朋友有一個需求

就是想要監控某個磁碟機

當他大小超過一定的Size後要做出一些動作

其實我也不知道要怎麼寫

所以就先推測

  1. 想必知道這支程式一定跟會跟事件有關係。
  2. 應該是在System.IO中處理。

好吧,那就朝這兩條線索找

在IDE中輸入System.IO後慢慢看有提供哪些類別

image

到MSDN查了一下發現FileSystemWatcher是我需要的材料之一

然後繼續接下來看到了

image

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的資料夾

 FileSystemWatchSetup.zip