首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >FileSystemWatcher未触发事件

FileSystemWatcher未触发事件
EN

Stack Overflow用户
提问于 2013-04-29 20:35:44
回答 4查看 38.1K关注 0票数 36

出于某种原因,我的FileSystemWatcher不会触发任何事件。我想知道在我的目录中创建、删除或重命名新文件的任何时间。我检查过,_myFolderPath设置正确。

下面是我当前的代码:

代码语言:javascript
复制
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));
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-29 20:51:28

您似乎在setup方法中将FileSystemWatcher创建为一个局部变量。这当然会在方法结束时超出范围,并且很可能在那时得到整理,从而删除手表。

试着在一个可以持久化的地方创建FSW (比如一个程序级别的变量),看看这样做是否能把你整理好。

票数 34
EN

Stack Overflow用户

发布于 2017-03-01 18:14:06

使用此设置器启用触发器:

代码语言:javascript
复制
watcher.EnableRaisingEvents = true;
票数 20
EN

Stack Overflow用户

发布于 2020-08-24 03:50:26

我的问题是,我希望它也监视子目录,但它在默认情况下并不这样做。如果您还想监视子目录,则将IncludeSubdirectories属性设置为true (默认情况下为false ):

代码语言:javascript
复制
fileSystemWatcher.IncludeSubdirectories = true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16278783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档