【发布时间】:2011-05-20 19:06:05
【问题描述】:
我正在尝试监视文件夹(及其子文件夹)的更改。但是,我的处理程序事件永远不会执行。我正在使用以下代码:
FileSystemWatcher m_Watcher = new FileSystemWatcher();
m_Watcher.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Portal 2 Map Installer/";
m_Watcher.Filter = "";
m_Watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
m_Watcher.IncludeSubdirectories = true;
m_Watcher.Changed += new FileSystemEventHandler(OnFolderChange);
m_Watcher.EnableRaisingEvents = true;
请帮忙!
【问题讨论】:
-
该代码在我看来是正确的。问题一定出在其他地方。您要查看哪种类型的文件系统?例如,这不适用于 FAT32 分区。
-
我想我已经明白了!由于某种原因,我的 Form1_Load 事件没有触发,这是我进行所有初始化的地方。现在找出原因。
-
好的,成功了!现在有谁知道如何阻止事件被触发三次?我触发了创建的事件,然后触发了两个更改的事件。
-
@Yoshie:你应该在构造函数中设置这样的属性:
public Form1(),而不是在Load事件处理方法中。 -
你无法阻止事件被多次触发,所以你必须解决这个问题。请参阅stackoverflow.com/questions/449993/… 获取一些建议。
标签: c# filesystemwatcher .net