F# 如何在F中使用FileSystemWatcher#
我想查看目录中的文件更改(创建、编辑、重命名、删除),并在检测到更改时执行一些操作,例如调用函数。据我所知,我们应该这样做。然而,文档页面上没有F#的示例代码,web上的其他地方似乎也很少 根据我的发现,以下至少是答案的一部分:F# 如何在F中使用FileSystemWatcher#,f#,F#,我想查看目录中的文件更改(创建、编辑、重命名、删除),并在检测到更改时执行一些操作,例如调用函数。据我所知,我们应该这样做。然而,文档页面上没有F#的示例代码,web上的其他地方似乎也很少 根据我的发现,以下至少是答案的一部分: let fileSystemWatcher = new FileSystemWatcher() fileSystemWatcher.Path <- @"C:\temp" // I'm actually using a variable here fileSyst
let fileSystemWatcher = new FileSystemWatcher()
fileSystemWatcher.Path <- @"C:\temp" // I'm actually using a variable here
fileSystemWatcher.NotifyFilter <- NotifyFilters.LastWrite
fileSystemWatcher.EnableRaisingEvents <- true
fileSystemWatcher.IncludeSubdirectories <- true
fileSystemWatcher.Changed.Add(fun _ -> printfn "changed")
fileSystemWatcher.Created.Add(fun _ -> printfn "created")
fileSystemWatcher.Deleted.Add(fun _ -> printfn "deleted")
fileSystemWatcher.Renamed.Add(fun _ -> printfn "renamed")
let fileSystemWatcher=new fileSystemWatcher()
Path对我在FSI中的工作很好
删除NotifyFilter
位-您正在覆盖默认设置(无论如何都包括LastWrite
),并且不会引发您关心的一些事件NotifyFilter
是一个过时的枚举标志样式字段,因此您可以在其中添加一个新值,如下所示:
watcher.NotifyFilter <- watcher.NotifyFilter ||| NotifyFilters.LastWrite
watcher.NotifyFilter您运行的是什么操作系统?如果你没有运行Windows,你使用的是哪个版本的Mono?忘了包括这个-Arch Linuxmono--version
说“mono JIT编译器版本3.12.0”。另外,在控制台应用程序中,需要设置fileSystemWatcher。SynchronizingObject
为空问题是,我正在查看的目录不是我正在编辑的目录(它们的名称相同,结构相似),因此当然不会发生任何事情。您的更改和我发布的代码实际上起了作用。