由于某种原因,我的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));
    }
}

最佳答案

您似乎在setup方法中将FileSystemWatcher创建为局部变量。当然,这将在方法结束时超出范围,并且很可能在此时进行整理,从而删除了 watch 。

尝试在将要保留的FSW(例如程序级变量)的某个点上创建它,看看是否能使您满意。

关于c# - FileSystemWatcher不触发事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16278783/

10-13 08:10