Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何在F中使用FileSystemWatcher#_F# - Fatal编程技术网

F# 如何在F中使用FileSystemWatcher#

F# 如何在F中使用FileSystemWatcher#,f#,F#,我想查看目录中的文件更改(创建、编辑、重命名、删除),并在检测到更改时执行一些操作,例如调用函数。据我所知,我们应该这样做。然而,文档页面上没有F#的示例代码,web上的其他地方似乎也很少 根据我的发现,以下至少是答案的一部分: let fileSystemWatcher = new FileSystemWatcher() fileSystemWatcher.Path <- @"C:\temp" // I'm actually using a variable here fileSyst

我想查看目录中的文件更改(创建、编辑、重命名、删除),并在检测到更改时执行一些操作,例如调用函数。据我所知,我们应该这样做。然而,文档页面上没有F#的示例代码,web上的其他地方似乎也很少

根据我的发现,以下至少是答案的一部分:

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 Linux
mono--version
说“mono JIT编译器版本3.12.0”。另外,在控制台应用程序中,需要设置
fileSystemWatcher。SynchronizingObject
为空问题是,我正在查看的目录不是我正在编辑的目录(它们的名称相同,结构相似),因此当然不会发生任何事情。您的更改和我发布的代码实际上起了作用。