Reputation: 965
I'm looking for a reliable way of looking for changes in a directory.
I have tried using the FileSystemWatcher, but it's rather inaccurate when many small files are created, changed or deleted. It misses about 1 or 2 % of the files in my tests. That is quite a lot when you are adding or changing thousands of files rapidly.
I have tried polling for changes at different intervals 500 ms, 2000 ms etc. In this case I get too many hits. That might have something to do with the resolution of timestamps on the FileInfo object.
So my question is; is it possible, using the .NET Framework, to get the the changes to a directory reliably?
-- Christian
Upvotes: 5
Views: 3345
Reputation: 9431
Have you tried increasing the InternalBufferSize? What size have you set it to?
From MSDN:
Note that a FileSystemWatcher may miss an event when the buffer size is exceeded. To avoid missing events, follow these guidelines: Increase the buffer size by setting the InternalBufferSize property. Avoid watching files with long file names, because a long file name contributes to filling up the buffer. Consider renaming these files using shorter names.
Keep your event handling code as short as possible.
Upvotes: 7