我有一个包含文件的目录,并且我的程序(在C#中)可以更改这些文件。如果有手动更改,则需要立即重新加载程序。
我想在目录中设置FileSystemWatcher,但是我无法确定何时对程序或其他方式进行更改。
我这样做是为了让我的程序将所有更改的文件设置为一个特定日期(例如2000年1月1日),当事件在“ watcher.Changed”中触发时,我可以看到该日期。
private static void WatcherOnChanged(object sender, FileSystemEventArgs fileSystemEventArgs)
{
var currentDate = File.GetLastWriteTime(fileSystemEventArgs.FullPath);
if (currentDate != new DateTime(2000, 1, 1))
{
Console.WriteLine($"changed {fileSystemEventArgs.FullPath}");
}
}
事件发生在File.SetLastWriteTime(file, new DateTime(2000, 1, 1));
也许时机不好?如何解决计时问题?
答案 0 :(得分:3)
详细说明:
您说的问题是,您无法确定FileSystemWatcher
的事件是由用户或程序所做的更改(“手动更改”)触发的。
由于您可能确实控制了程序修改这些文件的位置,因此每次修改内容时,您都可以跟踪文件中修改过的文件,例如Set<string>
。
然后,在OnChanged
事件触发时,如果文件名在该集合中,则将其从集合中丢弃并忽略该事件。