出于某种原因,我的 FileSystemWatcher
没有触发任何事件。我想知道何时在我的目录中创建、删除或重命名新文件。 _myFolderPath
设置正确,我已经检查过了。
这是我当前的代码:
public void Setup() {
var fileSystemWatcher = new FileSystemWatcher(_myFolderPath);
fileSystemWatcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
fileSystemWatcher.Changed += FileSystemWatcherChanged;
fileSystemWatcher.Created += FileSystemWatcherChanged;
fileSystemWatcher.Deleted += FileSystemWatcherChanged;
fileSystemWatcher.Renamed += FileSystemWatcherChanged;
fileSystemWatcher.Filter = "*.*";
fileSystemWatcher.EnableRaisingEvents = true;
}
private void FileSystemWatcherChanged(object sender, FileSystemEventArgs e)
{
MessageBox.Show("Queue changed");
listBoxQueuedForms.Items.Clear();
foreach (var fileInfo in Directory.GetFiles(_myFolderPath, "*.*", SearchOption.TopDirectoryOnly))
{
listBoxQueuedForms.Items.Add(fileInfo));
}
}
最佳答案
您似乎在设置方法中将 FileSystemWatcher 创建为局部变量。这当然会在方法结束时超出范围,并且很可能会在此时进行整理,从而移除 watch 。
尝试在 FSW 将被持久化的位置(例如程序级变量)创建 FSW,看看是否能解决问题。
关于c# - FileSystemWatcher 不触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278783/