如果這是一個重複的問題,我將開始道歉。有大量的FileSystemWatcher問題,但我沒有看到任何解決我的問題。FileSystemWatcher提高多個事件
好吧,所以我在C#中有一個控制檯應用程序,它監視一個目錄,我們將其稱爲Root
。 Root
有許多子文件夾。如果在Root
或其任何子文件夾中創建,修改或刪除任何.csv文件,則此應用程序的目的是寫入日誌文件。我目前有這種工作很好,有點。唯一的問題是創建一個.csv文件時,修改或刪除它實際上提出了對所有3
例如事件,如果我創建Root
一個名爲test.csv
,日誌文件應該是這樣的:
10/04/2012: File F:/Root/test.csv Created
10/04/2012: File F:/Root/test.csv Changed
10/04/2012: File F:/Root/test.csv Created
10/04/2012: File F:/Root/test.csv Deleted
我不知道怎麼回事,所以這裏是樹立FileSystemWatcher
_watchFolder.Path = ConfigurationManager.AppSettings["RootToWatch"];
_watchFolder.Filter = ConfigurationManager.AppSettings["FileNameToWatch"];
_watchFolder.NotifyFilter = NotifyFilters.FileName
| NotifyFilters.LastWrite;
_watchFolder.IncludeSubdirectories = true;
_watchFolder.Changed += new FileSystemEventHandler(OnChanged);
_watchFolder.Created += new FileSystemEventHandler(OnChanged);
_watchFolder.Deleted += new FileSystemEventHandler(OnChanged);
_watchFolder.Renamed += new RenamedEventHandler(OnRenamed);
try
{
_watchFolder.EnableRaisingEvents = true;
}
catch (ArgumentException ex)
{
AbortMonitoring(ex.Message);
}
這裏的代碼是我的事件調用onChanged(改名是相同的,但有不同的說法)
protected static void OnChanged(object sender, FileSystemEventArgs e)
{
//compile message to insert into log file.
string message = "File: " + e.FullPath + " " + e.ChangeType;
UpdateLogFile(message);
}
得到所有三個建議我創建它們的代碼正在做一個重命名。重命名會給你一個刪除,然後創建一個,然後寫入它。 –