出于某种原因,我的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));
}
}
发布于 2013-04-29 20:51:28
您似乎在setup方法中将FileSystemWatcher创建为一个局部变量。这当然会在方法结束时超出范围,并且很可能在那时得到整理,从而删除手表。
试着在一个可以持久化的地方创建FSW (比如一个程序级别的变量),看看这样做是否能把你整理好。
发布于 2017-03-01 18:14:06
使用此设置器启用触发器:
watcher.EnableRaisingEvents = true;
发布于 2020-08-24 03:50:26
我的问题是,我希望它也监视子目录,但它在默认情况下并不这样做。如果您还想监视子目录,则将IncludeSubdirectories属性设置为true (默认情况下为false ):
fileSystemWatcher.IncludeSubdirectories = true;
https://stackoverflow.com/questions/16278783
复制相似问题