Filewatcher API is a dotnet API to trigger action based on file-change events.
FileWatcher API has a bug which causes it to send multiple file change events. This happens because
FileSystemWatcher monitors the operating system activities, all events that applications like Notepad fire will be picked up.
A easy workaround for this issue:
let mutable lastChangedEvent = System.DateTime.Now watcher.Changed.Add(fun args -> // if time of last event fired is more than 500ms, // then perform action and update lastChangedEvent // else ignore if (System.DateTime.Now.Subtract lastChangedEvent).TotalMilliseconds > 500 then printfn "file changed" lastChangedEvent <- System.DateTime.Now )