Something intrigues me and I don't find any resource on this.
How can FileSystemWatcher know when a file on a computer "A" is created/removed/changed/renamed ?
I thought that this worked with polling, (the observer polls the server to check update), but after verifying the network activity with Wireshark I saw that polling was not used.
Does the SMB protocol use a observable/observer pattern ?
In this case how the server can know when a client doesn't observe him anymore ?
What is the consequence when the network falls during an observation and comes back right after?
Using FileSystemWatcher on another computer seems too easy to be true…
Best Solution
It kinda is. The underlying API -
ReadDirectoryChanges()
- opens up a connection to the server, which is responsible for responding when something changes. If that connection gets dropped for some reason, or you bump up against the connection limit of the OS you're connecting to, then you don't get notifications.I've found that it is more reliable to poll periodically (with some rather long interval), and use
FileSystemWatcher
only as a way of responding quickly to changes in between polls.